Namespaces
Variants

std:: tuple_size <std::pair>

From cppreference.net
Utilities library
Défini dans l'en-tête <utility>
template < class T1, class T2 >

struct tuple_size < std:: pair < T1, T2 >>

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

La spécialisation partielle de std:: tuple_size pour les paires fournit un moyen à la compilation d'obtenir le nombre d'éléments dans une paire, qui est toujours 2, en utilisant une syntaxe de type tuple.

Table des matières

Hérité de std:: integral_constant

Constantes membres

value
[static]
la valeur constante 2
(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>
#include <utility>
template<class T>
void test([[maybe_unused]]T t)
{
    [[maybe_unused]]
    int a[std::tuple_size<T>::value]; // peut être utilisé à la compilation
    std::cout << std::tuple_size<T>::value << '\n'; // ou à l'exécution
}
int main()
{
    test(std::make_tuple(1, 2, 3.14));
    test(std::make_pair(1, 3.14));
}

Sortie :

3
2

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 2313 C++11 les spécialisations pour pair n'étaient pas requises d'être dérivées de integral_constant requis

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'un array
(spécialisation de modèle de classe)
obtient la taille d'un

tuple
(spécialisation de modèle de classe)

obtient la taille d'un std::ranges::subrange
(spécialisation de modèle de classe)
obtient le type des éléments d'une pair
(spécialisation de modèle de classe)