...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::type_erasure::is_subconcept
// In header: <boost/type_erasure/is_subconcept.hpp> template<typename Sub, typename Super, typename PlaceholderMap = void> struct is_subconcept { };
is_subconcept is a boolean metafunction that determines whether one concept is a sub-concept of another.
is_subconcept<incrementable<>, incrementable<> > -> true is_subconcept<incrementable<>, addable<> > -> false is_subconcept<incrementable<_a>, forward_iterator<_iter>, mpl::map<mpl::pair<_a, _iter> > > -> true
typename Sub
The sub concept
typename Super
The super concept
typename PlaceholderMap = void
(optional) An MPL map with keys for every non-deduced placeholder in Sub. The associated value of each key is the corresponding placeholder in Super. If PlaceholderMap
is omitted, Super
and Sub
are presumed to use the same set of placeholders.