Boost logo

Boost :

Subject: Re: [boost] [Developing for Boost saves time]( was Re: Another variant type (was: [peer review queue tardiness] [was Cleaning out the Boost review queue] Review Queue mem)
From: pfultz2 (pfultz2_at_[hidden])
Date: 2015-04-05 03:47:42

> Despite what you think, concepts are real and they're coming. If you
> dislike the Concepts Lite approach, you're not alone, but that's what
> we're getting. It's certainly not all that C++0x concepts were, but
> there's some good things about that, and having built a non-trivial
> concepts-based library

The advantages language-based concepts provide are multi-phase checking and
concept mapping, two features that concepts lite currently does not provide.
Multi-phase checking could be added in the future, but concept mapping is
somewhat complicated with concepts lite's current design.

> (range-v3 uses a Concepts Lite emulation layer),
> it's really not bad. Range-v3 would be impossible without something like
> concepts, and real language support will help immensely, IMO.

I don't think you can compare library-based concepts to concepts lite.
Library-based concepts(such as in ranges-v3) is a very natural and
evolutionary step forward for concept checking. However, concepts lite has
many surprises(and workarounds), in addition to the complications for future
features of the language(such as concept mapping or type erasure), which
from its core design of subsuming and propositional logic.

We do need a language feature for concepts, but concepts lite is not it. I,
a library writer, will probably continue to use library-based concepts with
concepts lite C++ since it provides better composability and less
surprises(even if it requires some macros).

> Maybe that's because it has usability problems, and doesn't actually
> solve the problems concepts are intended to solve. You can't do
> concepts-based overloading with Boost.Concepts, for instance.
> Boost.Concepts gives only hard errors.

Exactly. One of the goals of concepts is to produce less error output, which
Boost.ConceptCheck does not achieve.


View this message in context:
Sent from the Boost - Dev mailing list archive at

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