...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> struct rank : public integral_constant<std::size_t, RANK(T)> {};
Inherits: Class template rank inherits from
integral_constant<std::size_t, RANK(T)>
,
where RANK(T)
is the
number of array dimensions in type T
.
If T
is not a (built-in)
array type, then RANK(T)
is zero.
Compiler Compatibility: All current compilers are supported by this trait.
Header: #include
<boost/type_traits/rank.hpp>
or #include <boost/type_traits.hpp>
Examples:
rank<int[]>
inherits fromintegral_constant<std::size_t, 1>
.
rank<double[2][3][4]>::type
is the typeintegral_constant<std::size_t, 3>
.
rank<int[1]>::value
is an integral constant expression that evaluates to 1.
rank<int[][2]>::value
is an integral constant expression that evaluates to 2.
rank<int*>::value
is an integral constant expression that evaluates to 0.
rank<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!
rank<T>::value_type
is the typestd::size_t
.