
Hasn't this already been done for the STL (algorithms) by both N2914 and N3351? If we can't settle on a couple of approaches to experiment with and list their advantages/disadvantages, how can we hope to ever get concepts standardized?
Yes, I know of published descriptions of concepts for the standard library (n2914) and a subset of the standard library (n3351). The standard library is expansive, but I'd like to see serious attempts at deriving concepts for libraries outside the standard. Using C++11, of course.
Right now I see two ways forward:
1. I implement N3351 in Boost.Contract and Matt implements N2914 in Boost.Generic. 2. Or, I help Matt implementing N2914 in Boost.Generic (and Boost.Contract's requires clause will use concepts defined using Boost.Generic).
Then we all use the lib(s) to experiment with concepts before (re)proposing concepts (and hopefully contracts) for standardization in C++1x.
Experimenting is great. This is why I have Origin (https://code.google.com/p/origin/). I've been experimenting with concepts-as-a-library in various forms since 2009, and it only gets you so far. It's a very helpful if you want to develop a first pass at concepts for a library, and sometimes it pays off if you need to reason about some language feature interactions. But what aspect of standardization are you hoping to influence through your experiments?