Boost logo

Boost :

Subject: Re: [boost] [generic] status?
From: lcaminiti (lorcaminiti_at_[hidden])
Date: 2012-05-06 19:20:16


Dave Abrahams wrote
>
> on Sat May 05 2012, lcaminiti <lorcaminiti-AT-gmail.com> wrote:
>
>> Hello all,
>>
>> What's the status of Matt Calabrese's Boost.Generic library?
>
> Whom are you asking? I wouldn't wait around for Matt to answer; sadly, I
> haven't seen him around the list in months.
>
>> I was looking at the similarities between Boost.Generic and
>> Boost.Contract
>> syntax, and I think the following syntax can be implemented to define
>> concepts, concepts_maps, axioms, etc
>>
>> CONTRACT_CONCEPT(
>> concept (Iterator) ( typename X ) extends( Semiregular<X> )
>> (
>> typename(MoveConstructible) reference, as typename X::reference ,
>> typename(MoveConstructible) postinc_result ,
>> requires HasDereference<postinc_result> ,
>>
>> (reference) operator(*)(deref) ( X& ) ,
>> (reference) operator(*)(deref) ( X&& ) ,
>> (X&) operator(++)(preinc) ( X& ) ,
>> (postinc_result) operator(++)(postinc) ( X&, int )
>> )
>> )
>
> It looks beautiful to me!
>
>> More examples here (auto concepts, concept maps, axioms, etc):
>> http://contractpp.svn.sourceforge.net/viewvc/contractpp/trunk/doc/html/contract__/grammar.html#contract__.grammar.possible_concept_definition_syntax
>
> Even more so!
>
>> If there was real interest using this syntax to define concepts, either
>> the
>> syntax could replace the on of Boost.Generic or Boost.Contract could
>> provide
>> the syntax and then use Boost.Generic behind the scene to actually define
>> the concepts (same as Boost.Contract now does for Boost.Parameter).
>>
>> What do you think?
>
> I want this yesterday. When can we review it?
>

I'm glad to see that there's interest.

Boost.Contract _without_ concept definitions should be ready for a review
this summer or in the fall (it's so much work!).

As for concept definitions:

Where's Boost.Generic code base? (I couldn't find it.) Is there any other
library that I can use to implement concepts in C++11 even if it requires
significant amount of boiler-plate code?

If there's already a back-end library that I can use to implement concepts
in C++11 then I "only" have to implement the syntax parsing macros and that
will take about 1 month to get a working version and a total of 3 months to
get it ready for review (beginning on 2013?). But if I have to also
implement the back-end that defines the concepts in C++11... I have no idea
how long that will take.

Boost.Generic claims to support the following (which looks pretty good to
me):
Associate Types -- Yes
Associate Functions -- Yes
Multi-type Concepts -- Yes
Concept Maps -- Yes
Archetypes -- Yes
Concept Refinement -- Yes
Typename Deduction -- Yes
Concept-Based Overloading -- Almost

Thanks.
--Lorenzo

--
View this message in context: http://boost.2283326.n4.nabble.com/boost-generic-status-tp4611363p4613726.html
Sent from the Boost - Dev mailing list archive at Nabble.com.

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk