std::tuple_element<std::array>
De cppreference.com
Definido en el archivo de encabezado <array> | ||
template<std::size_t I, class T, std::size_t N > struct tuple_element< I, std::array<T, N>>; | (desde C++11) | |
Proporciona acceso de subíndice en tiempo de compilación al tipo de los elementos del array utilizando una interfaz similar a una tupla.
Contenido |
[editar]Tipos miembro
Tipo miembro | Definición |
type | El tipo de los elementos del array. |
[editar]Posible implementación
template<std::size_t I, class T>struct tuple_element; template<std::size_t I, class T, std::size_t N>struct tuple_element<I, std::array<T,N>>{using type = T;}; |
[editar]Ejemplo
Ejecuta este código
#include <array>#include <iostream>#include <tuple>#include <type_traits> int main(){// definir array y obtener el tipo del elemento en la posición 0std::array<int, 10> data {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};using T =std::tuple_element<0, decltype(data)>::type;// int std::cout<<std::boolalpha;std::cout<<std::is_same<T, int>::value<<'\n'; constauto const_data = data;using CT =std::tuple_element<0, decltype(const_data)>::type;// const int // el resultado de tuple_element depende de la calificación-cv// del tipo similar a una tuplastd::cout<<std::is_same<T, CT>::value<<'\n';std::cout<<std::is_same<CT, constint>::value<<'\n';}
Salida:
true false true
[editar]Véase también
Vínculo estructurado(C++17) | Vincula los nombres especificados a subobjetos o elementos de una tupla del inicializador. |
Obtiene el tipo del elemento especificado. (especialización de plantilla de clase) | |
Obtiene el tipo de los elementos de un par. (especialización de plantilla de clase) |