[/ 
  Copyright 2007 John Maddock.
  Distributed under the Boost Software License, Version 1.0.
  (See accompanying file LICENSE_1_0.txt or copy at
  http://www.boost.org/LICENSE_1_0.txt).
]

[section:rank rank]
   template <class T>
   struct rank : public __integral_constant<std::size_t, RANK(T)> {};
  
__inherit 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.

__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`.]

[endsect]

