...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 / Intrinsic Metafunctions / size |
size returns the number of elements in the sequence, that is, the number of elements in the range [begin<Sequence>::type, end<Sequence>::type).
#include <boost/mpl/size.hpp>
Parameter | Requirement | Description |
---|---|---|
Sequence | Forward Sequence | A sequence to query. |
For any Forward Sequence s:
typedef size<s>::type n;
Return type: | Integral Constant. |
---|---|
Semantics: | Equivalent to typedef distance< begin<s>::type,end<s>::type >::type n; |
Postcondition: | n::value >= 0. |
The complexity of the size metafunction directly depends on the implementation of the particular sequence it is applied to. In the worst case, size guarantees a linear complexity.
If the s is a Random Access Sequence, size<s>::type is an O(1) operation. The opposite is not necessarily true — for example, a sequence class that models Forward Sequence might still give us an O(1) size implementation.
typedef list0<> empty_list; typedef vector_c<int,0,1,2,3,4,5> numbers; typedef range_c<int,0,100> more_numbers; BOOST_MPL_ASSERT_RELATION( size<list>::value, ==, 0 ); BOOST_MPL_ASSERT_RELATION( size<numbers>::value, ==, 5 ); BOOST_MPL_ASSERT_RELATION( size<more_numbers>::value, ==, 100 );