Namespaces
Variants

std:: tuple_size <std::pair>

From cppreference.net
Utilities library
Definido en el encabezado <utility>
template < class T1, class T2 >

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

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

La especialización parcial de std:: tuple_size para pares proporciona una forma en tiempo de compilación de obtener el número de elementos en un par, que siempre es 2, utilizando sintaxis similar a tuplas.

Contenidos

Heredado de std:: integral_constant

Constantes miembro

value
[static]
el valor constante 2
(constante miembro pública estática)

Funciones miembro

operator std::size_t
convierte el objeto a std:: size_t , devuelve value
(función miembro pública)
operator()
(C++14)
devuelve value
(función miembro pública)

Tipos miembro

Tipo Definición
value_type std:: size_t
type std:: integral_constant < std:: size_t , value >

Ejemplo

#include <iostream>
#include <tuple>
#include <utility>
template<class T>
void test([[maybe_unused]]T t)
{
    [[maybe_unused]]
    int a[std::tuple_size<T>::value]; // se puede usar en tiempo de compilación
    std::cout << std::tuple_size<T>::value << '\n'; // o en tiempo de ejecución
}
int main()
{
    test(std::make_tuple(1, 2, 3.14));
    test(std::make_pair(1, 3.14));
}

Salida:

3
2

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 2313 C++11 las especializaciones para pair no estaban requeridas a derivar de integral_constant requerido

Véase también

Structured binding (C++17) vincula los nombres especificados a subobjetos o elementos de tupla del inicializador
(C++11)
obtiene el número de elementos de un tipo similar a tupla
(plantilla de clase)
obtiene el tamaño de un array
(especialización de plantilla de clase)
obtiene el tamaño de

una tuple
(especialización de plantilla de clase)

obtiene el tamaño de un std::ranges::subrange
(especialización de plantilla de clase)
obtiene el tipo de los elementos de pair
(especialización de plantilla de clase)