[generic] status?

Hello all, What's the status of Matt Calabrese's Boost.Generic library? 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 ) ) ) More examples here (auto concepts, concept maps, axioms, etc): http://contractpp.svn.sourceforge.net/viewvc/contractpp/trunk/doc/html/contr... 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? Thanks. --Lorenzo -- View this message in context: http://boost.2283326.n4.nabble.com/boost-generic-status-tp4611363.html Sent from the Boost - Dev mailing list archive at Nabble.com.

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/contr...
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? -- Dave Abrahams BoostPro Computing http://www.boostpro.com

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/contr...
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.ht... Sent from the Boost - Dev mailing list archive at Nabble.com.
participants (2)
-
Dave Abrahams
-
lcaminiti