...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Front Page / Sequences / Classes / range_c |
template< typename T , T Start , T Finish > struct range_c { typedef integral_cstart; typedef integral_c finish; // unspecified // ... };
range_c is a sorted Random Access Sequence of Integral Constants. Note that because it is not an Extensible Sequence, sequence-building intrinsic metafunctions such as push_front and transformation algorithms such as replace are not directly applicable — to be able to use them, you'd first need to copy the content of the range into a more suitable sequence.
#include <boost/mpl/range_c.hpp>
In the following table, r is an instance of range_c, n is an Integral Constant, T is an arbitrary integral type, and n and m are integral constant values of type T.
Expression | Semantics |
---|---|
range_c |
A sorted Random Access Sequence of integral constant
wrappers for the half-open range of values [n,
m): integral_c |
begin |
An iterator pointing to the beginning of r; see Random Access Sequence. |
end |
An iterator pointing to the end of r; see Random Access Sequence. |
size |
The size of r; see Random Access Sequence. |
empty |
A boolean Integral Constant c such that c::value == true if and only if r is empty; see Random Access Sequence. |
front |
The first element in r; see Random Access Sequence. |
back |
The last element in r; see Random Access Sequence. |
at |
The nth element from the beginning of r; see Random Access Sequence. |
typedef range_crange0; typedef range_c range1; typedef range_c range10; BOOST_MPL_ASSERT_RELATION( size ::value, ==, 0 ); BOOST_MPL_ASSERT_RELATION( size ::value, ==, 1 ); BOOST_MPL_ASSERT_RELATION( size ::value, ==, 10 ); BOOST_MPL_ASSERT(( empty )); BOOST_MPL_ASSERT_NOT(( empty )); BOOST_MPL_ASSERT_NOT(( empty )); BOOST_MPL_ASSERT(( is_same< begin ::type, end ::type > )); BOOST_MPL_ASSERT_NOT(( is_same< begin ::type, end ::type > )); BOOST_MPL_ASSERT_NOT(( is_same< begin ::type, end ::type > )); BOOST_MPL_ASSERT_RELATION( front ::type::value, ==, 0 ); BOOST_MPL_ASSERT_RELATION( back ::type::value, ==, 0 ); BOOST_MPL_ASSERT_RELATION( front ::type::value, ==, 0 ); BOOST_MPL_ASSERT_RELATION( back ::type::value, ==, 9 );