| Home | Libraries | People | FAQ | More

### rank

    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 from `integral_constant<std::size_t, 1>`.

> `rank<double[2][3][4]>::type` is the type `integral_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 type `std::size_t`.