Each of the range concepts has a corresponding concept checking class in
These classes may be used in conjunction with the Boost
Concept Check library to ensure that the type of a template parameter
is compatible with a range concept. If not, a meaningful compile time error
is generated. Checks are provided for the range concepts related to iterator
traversal categories. For example, the following line checks that the type
T models the Forward
BOOST_CONCEPT_ASSERT(( ForwardRangeConcept<T> ));
An additional concept check is required for the value access property of the range based on the range's iterator type. For example to check for a ForwardReadableRange, the following code is required.
BOOST_CONCEPT_ASSERT(( ForwardRangeConcept<T> )); BOOST_CONCEPT_ASSERT(( ReadableIteratorConcept<typename range_iterator<T>::type> ));
The following range concept checking classes are provided.
Range Terminology and style guidelines