std::rank (3) Linux Manual Page
std::rank – std::rank
Synopsis
Defined in header<type_traits>
template <class T>
(since C++ 11)
struct rank;
If T is an array type, provides the member constant value equal to the number of dimensions of the array. For any other type, value is 0.
Helper variable template
template< class T > (since C++17)
inline constexpr std::size_t rank_v = rank<T>::value;
Inherited from std::integral_constant
Member constants
value the number of dimensions of T or zero
[static]
Member functions
operator std::size_t (public member function)
operator() returns value
(C++14)
Member types
Type Definition
value_type std::size_t
type std::integral_constant<std::size_t, value>
Possible implementation
Example
// Run this code
#include <iostream>
#include <type_traits>
int main()
{
std::cout << std::rank<int>{} << "\n\n";
std::cout << std::rank<int[5]>{} << '\n';
std::cout << std::rank<int[5][5]>{} << '\n';
std::cout << std::rank<int[][5][5]>{} << '\n';
}
Output:
See also
is_array checks if a type is an array type
(C++11)
extent obtains the size of an array type along a specified dimension
(C++11)
remove_extent removes one extent from the given array type
(C++11)
remove_all_extents removes all extents from the given array type
(C++11)
