Namespaces
Variants

std:: tuple_element <std::array>

From cppreference.net
Definido en el 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 indexado en tiempo de compilación al tipo de los elementos del array utilizando una interfaz tipo tuple.

Contenidos

Tipos de miembros

Tipo de miembro Definición
type el tipo de elementos del array

Implementación posible

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

Ejemplo

#include <array>
#include <tuple>
#include <type_traits>
int main()
{
    // definir array y obtener el tipo del elemento en 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
    static_assert(std::is_same_v<T, int>);
    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 tipo-tupla
    static_assert(!std::is_same_v<T, CT>);
    static_assert(std::is_same_v<CT, const int>);
}

Véase también

Structured binding (C++17) vincula los nombres especificados a subobjetos o elementos de tupla del inicializador
obtiene el tipo del elemento especificado
(especialización de plantilla de clase)
obtiene el tipo de los elementos de pair
(especialización de plantilla de clase)