...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
template <class T, std::size_t N = 0> struct extent : public integral_constant<std::size_t, EXTENT(T,N)> {};
Inherits: Class template extent inherits
from integral_constant<std::size_t, EXTENT(T,N)>
,
where EXTENT(T,N)
is the number of elements in the N'th array
dimension of type T
.
If T
is not a (built-in)
array type, or if N >
rank<T>::value
, or if the N'th array bound is incomplete,
then EXTENT(T,N)
is zero.
Header: #include
<boost/type_traits/extent.hpp>
or #include <boost/type_traits.hpp>
Examples:
extent<int[1]>
inherits fromintegral_constant<std::size_t, 1>
.
extent<double[2][3][4], 0>::type
is the typeintegral_constant<std::size_t, 2>
.
extent<double[2][3][4], 1>::type
is the typeintegral_constant<std::size_t, 3>
.
extent<double[2][3][4], 2>::type
is the typeintegral_constant<std::size_t, 4>
.
extent<int[4]>::value
is an integral constant expression that evaluates to 4.
extent<int[][2]>::value
is an integral constant expression that evaluates to 0.
extent<int[][2], 1>::value
is an integral constant expression that evaluates to 2.
extent<int*>::value
is an integral constant expression that evaluates to 0.
extent<boost::array<int, 3> >::value
is an integral constant expression that evaluates to 0:boost::array
is a class type and not an array type!
extent<T>::value_type
is the typestd::size_t
.
Compiler Compatibility: All current compilers are supported by this trait.