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 <> 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
> and/or the corresponding slides
> ). I've gotten numerous emails about it since 2011 and I decided to
> commit the current state of Boost.Generic to the sandbox today.


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


> 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!forum/std-discussion

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


> 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
> paragraph 3 highlights why it's non-trivial, see

? That seems to cover implicit (not explicit) concept maps: 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             Clang/LLVM/EDG Compilers  C++  Boost

Boost list run by bdawes at, gregod at, cpdaniel at, john at