| Home | Libraries | People | FAQ | More

### extent

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

> `extent<double[2][3][4], 0>::type` is the type `integral_constant<std::size_t, 2>`.

> `extent<double[2][3][4], 1>::type` is the type `integral_constant<std::size_t, 3>`.

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

Compiler Compatibility: All current compilers are supported by this trait.