std::remove_all_extents
De cppreference.com
| Definido en el archivo de encabezado <type_traits>
|
||
template< class T > struct remove_all_extents; |
(desde C++11) | |
Si T es un array multidimensional de algún tipo X, proporciona la definición de tipo (typedef) miembro type igual a X; de lo contrario, type es T.
El comportamiento de un programa que añade especializaciones para remove_all_extents no está definido.
Tipos miembro
| Nombre | Definición |
type
|
El tipo del elemento de T.
|
Tipos auxiliares
template< class T > using remove_all_extents_t = typename remove_all_extents<T>::type; |
(desde C++14) | |
Posible implementación
template<class T>
struct remove_all_extents { typedef T type;};
template<class T>
struct remove_all_extents<T[]> {
typedef typename remove_all_extents<T>::type type;
};
template<class T, std::size_t N>
struct remove_all_extents<T[N]> {
typedef typename remove_all_extents<T>::type type;
};
|
Ejemplo
Ejecuta este código
#include <iostream>
#include <type_traits>
#include <typeinfo>
template<class A>
void foo(const A&)
{
typedef typename std::remove_all_extents<A>::type Type;
std::cout << "tipo subyacente: " << typeid(Type).name() << '\n';
}
int main()
{
float a1[1][2][3];
int a2[3][2];
float a3[1][1][1][1][2];
double a4[2][3];
foo(a1);
foo(a2);
foo(a3);
foo(a4);
}
Posible salida:
tipo subyacente: f
tipo subyacente: i
tipo subyacente: f
tipo subyacente: d
Véase también
(C++11) |
Comprueba si un tipo es un tipo array (plantilla de clase) |
(C++11) |
Obtiene el número de dimensiones de un tipo array (plantilla de clase) |
(C++11) |
Obtiene el tamaño de un tipo array a lo largo de una dimensión especificada (plantilla de clase) |
(C++11) |
Elimina una dimensión del tipo array dado (plantilla de clase) |