◐ Shell
clean mode source ↗

std::rank - cppreference.com

De cppreference.com

template< class T > struct rank;

(desde C++11)

Si T es un tipo array, proporciona la constante miembro value igual al número de dimensiones del array. Para cualquier otro tipo, value es 0.

El comportamiento de un programa que añade especializaciones para rank o rank_v (desde C++17) no está definido.

Plantilla de variable auxiliar

template< class T > inline constexpr std::size_t rank_v = rank<T>::value;

(desde C++17)

Heredado de std::integral_constant

Constantes miembro

el número de dimensiones de T o cero
(constante miembro pública estática)

Funciones miembro

Convierte el objeto a std::size_t, devuelve value.
(función miembro pública)
Devuelve value.
(función miembro pública)

Tipos miembro

Tipo Definición
value_type std::size_t
type std::integral_constant<std::size_t, value>

Posible implementación

template<class T>
struct rank : public std::integral_constant<std::size_t, 0> {};

template<class T>
struct rank<T[]> : public std::integral_constant<std::size_t, rank<T>::value + 1> {};

template<class T, std::size_t N>
struct rank<T[N]> : public std::integral_constant<std::size_t, rank<T>::value + 1> {};

Ejemplo

#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';
}

Salida:

Véase también

Comprueba si un tipo es un tipo array
(plantilla de clase) [editar]
Obtiene el tamaño de un tipo array a lo largo de una dimensión especificada
(plantilla de clase) [editar]
Elimina una dimensión del tipo array dado
(plantilla de clase) [editar]
Elimina todas las dimensiones del tipo array dado
(plantilla de clase) [editar]