Espacios de nombres
Variantes
Acciones

std::tuple_element<std::array>

De cppreference.com
< cpp‎ | container‎ | array
 
 
 
 
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

#include <array>
#include <iostream>
#include <tuple>
#include <type_traits>
 
int main()
{
   // definir array y obtener el tipo del elemento en la posición 0
   std::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';
 
   const auto 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 tupla
   std::cout << std::is_same<T, CT>::value << '\n';
   std::cout << std::is_same<CT, const int>::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. [editar]
Obtiene el tipo del elemento especificado.
(especialización de plantilla de clase) [editar]
Obtiene el tipo de los elementos de un par.
(especialización de plantilla de clase) [editar]