Namespaces
Variants

std:: tuple_element <std::array>

From cppreference.net
Défini dans l'en-tête <array>
template < std:: size_t I, class T, std:: size_t N >
struct tuple_element < I, std:: array < T, N > > ;
(depuis C++11)

Fournit un accès indexé à la compilation au type des éléments du tableau en utilisant une interface de type tuple.

Table des matières

Types membres

Type de membre Définition
type le type des éléments du tableau

Implémentation possible

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;
};
**Note:** Le code C++ dans les balises `
` n'a pas été traduit conformément aux instructions, car il contient des termes spécifiques au C++ qui doivent rester en anglais pour préserver leur signification technique exacte.

Exemple

#include <array>
#include <tuple>
#include <type_traits>
int main()
{
    // définir un tableau et obtenir le type de l'élément à la position 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
    // le résultat de tuple_element dépend de la qualification cv du type tuple-like
    static_assert(!std::is_same_v<T, CT>);
    static_assert(std::is_same_v<CT, const int>);
}

Voir aussi

Liaison structurée (C++17) lie les noms spécifiés aux sous-objets ou éléments de tuple de l'initialiseur
obtient le type de l'élément spécifié
(spécialisation de modèle de classe)
obtient le type des éléments de pair
(spécialisation de modèle de classe)