Namespaces
Variants

std:: tuple_size <std::tuple>

From cppreference.net
Utilities library
Défini dans l'en-tête <tuple>
template < class ... Types >

struct tuple_size < std:: tuple < Types... > >

: std:: integral_constant < std:: size_t , sizeof... ( Types ) > { } ;
(depuis C++11)

Fournit un accès au nombre d'éléments dans un tuple sous forme d'une expression constante évaluée à la compilation.

Table des matières

Modèle de variable d'assistance

template < class T >
constexpr std:: size_t tuple_size_v = tuple_size < T > :: value ;
(depuis C++17)

Hérité de std:: integral_constant

Constantes membres

value
[static]
sizeof...(Types)
(constante membre publique statique)

Fonctions membres

operator std::size_t
convertit l'objet en std:: size_t , retourne value
(fonction membre publique)
operator()
(C++14)
retourne value
(fonction membre publique)

Types membres

Type Définition
value_type std:: size_t
type std:: integral_constant < std:: size_t , value >

Exemple

#include <iostream>
#include <tuple>
template <class T>
void test(T value)
{
    int a[std::tuple_size_v<T>]; // peut être utilisé à la compilation
    std::cout << std::tuple_size<T>{} << ' ' // ou à l'exécution
              << sizeof a << ' '
              << sizeof value << '\n';
}
int main()
{
    test(std::make_tuple(1, 2, 3.14));
}

Sortie possible :

3 12 16

Voir aussi

Structured binding (C++17) lie les noms spécifiés aux sous-objets ou éléments de tuple de l'initialiseur
(C++11)
obtient le nombre d'éléments d'un type de type tuple
(modèle de classe)
obtient la taille d'une pair
(spécialisation de modèle de classe)
obtient la taille d'un array
(spécialisation de modèle de classe)
obtient la taille d'un std::ranges::subrange
(spécialisation de modèle de classe)
tuple accède à l'élément spécifié
(modèle de fonction)