Namespaces
Variants

std:: tuple_size <std::tuple>

From cppreference.net
Utilities library
Definido en el encabezado <tuple>
template < class ... Types >

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

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

Proporciona acceso al número de elementos en una tupla como una expresión constante en tiempo de compilación.

Contenidos

Plantilla de variable auxiliar

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

Heredado de std:: integral_constant

Constantes miembro

value
[static]
sizeof...(Types)
(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>
template <class T>
void test(T value)
{
    int a[std::tuple_size_v<T>]; // se puede usar en tiempo de compilación
    std::cout << std::tuple_size<T>{} << ' ' // o en tiempo de ejecución
              << sizeof a << ' '
              << sizeof value << '\n';
}
int main()
{
    test(std::make_tuple(1, 2, 3.14));
}

Salida posible:

3 12 16

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
(class template)
obtiene el tamaño de un pair
(class template specialization)
obtiene el tamaño de un array
(class template specialization)
obtiene el tamaño de un std::ranges::subrange
(class template specialization)
tupla accede al elemento especificado
(function template)