Subject: Re: [boost] [contract] concepts: pseudo-signatures vs. usage patterns
From: Andrew Sutton (asutton.list_at_[hidden])
Date: 2012-10-12 09:25:52


> 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?