Boost logo

Boost :

Subject: Re: [boost] Boost.Generic, C++0x Concepts, and C++1y Concepts
From: Dave Abrahams (dave_at_[hidden])
Date: 2012-10-04 17:25:35


on Thu Sep 27 2012, Matt Calabrese <rivorus-AT-gmail.com> wrote:

> Hey everyone,
>
> It's been a while since I've made an appearance on this list,

Hey, good to hear from you; welcome back!

> but I was contacted regarding the recent discussion of concepts here
> and Lorenzo's taking the reins of a concept library, and decided to
> poke my head in. First, I apologize to the community for not getting
> Boost.Generic on the sandbox earlier (if you are unfamiliar with
> Boost.Generic, see my 2011 BoostCon talk
> http://blip.tv/boostcon/boost-generic-concepts-without-concepts-5262126
> and/or the corresponding slides
> https://github.com/boostcon/2011_presentations/raw/master/thu/Boost.Generic.pdf
> ). I've gotten numerous emails about it since 2011 and I decided to
> commit the current state of Boost.Generic to the sandbox today.

Thanks!

> It is still based on the "old" concepts of C++0x with
> pseudo-signatures. You can find it in the "generic" subdirectory of
> the sandbox. That said, I'm not sure anyone even cares about
> Boost.Generic anymore given that the standard seems to be diverging
> from how it originally was approaching concepts,

I would not draw too many conclusions from the recent EWG proposals. It
remains unclear to many of us that the "valid expressions" approach is
technically or ergonomically feasible.

> but here it is anyway. Similarly, I'm not sure there is any interest
> from people for me to continue developing Boost.Generic, so I guess
> this is a check for interest again.

+1

> And, very briefly, without getting too political here (not that my
> opinion has any bearing) but I personally do not agree with some of
> the recent design changes for what may turn out to be C++1y concepts
> -- specifically I think pseudo-signatures were better overall and the
> C++0x form of associated types was much more useful than what is
> currently described, especially concerning associated type deduction,
> which no longer appears to be possible. But I don't think this
> discussion is suitable for the Boost mailing list and I don't want to
> ruffle too many feathers beyond that, so I'll take that elsewhere.

You should bring it to
https://groups.google.com/a/isocpp.org/forum/?fromgroups#!forum/std-discussion
or https://groups.google.com/a/isocpp.org/forum/?fromgroups#!forum/std-proposals.

> For this reason, though, I [currently] do not have a
> desire to support that form of concepts in my library, though I do
> plan to resume work on Boost.Generic.

+1

> A recap of what's gone on since my Boostcon talk, for anyone who even
> remembers it -- I haven't been actively developing Boost.Generic for over a
> year as I have been busy with other things, but coincidentally in the past
> couple of weeks I've gone back to it and decided to update some things due
> to a trick I realized I could use to get full compatibility with the C++0x
> working paper for explicit concept map templates (N2914's 14.10.3.2
> paragraph 3 highlights why it's non-trivial, see
> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2914.pdf).

? That seems to cover implicit (not explicit) concept maps:

14.10.3.2 Implicit concept maps for refined concepts [concept.refine.maps]

> Since then, I've had renewed interest in the project and have updated
> various facilities. Stuff that changed since my presentation back in
> 2011 -- it now supports variadic concepts using the syntax ,,, (see

So clever.

-- 
Dave Abrahams
BoostPro Computing                  Software Development        Training
http://www.boostpro.com             Clang/LLVM/EDG Compilers  C++  Boost

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