Clase tuple_size

Informa el número de elementos que contiene una tuple .

Sintaxis

// TEMPLATE STRUCT tuple_size
template <class Tuple>
   struct tuple_size;

// number of elements in array
template <class Elem, size_t Size>
   struct tuple_size<array<Elem, Size>>
      : integral_constant<size_t, Size>;

// size of pair
template <class T1, class T2>
   struct tuple_size<pair<T1, T2>>
      : integral_constant<size_t, 2>

// size of tuple
template <class... Types>
   struct tuple_size<tuple<Types...>>
      : integral_constant<size_t, sizeof...(Types)>;

// size of const tuple
template <class Tuple>
   struct tuple_size<const Tuple>;

// size of volatile tuple
template <class Tuple>
   struct tuple_size<volatile Tuple>;

// size of const volatile tuple
template <class Tuple>
   struct tuple_size<const volatile Tuple>;

template <class T> inline constexpr size_t tuple_size_v = tuple_size<T>::value;

Parámetros

Tuple
El tipo de tupla.

Elem
El tipo de los elementos de la matriz.

Size
Se refiere al tamaño de la matriz.

T1
El tipo del primer miembro del par.

T2
El tipo del segundo miembro del par.

Types
Los tipos de los elementos de tupla.

Comentarios

La plantilla de clase tiene un miembro value que es una expresión constante entera cuyo valor es la extensión del tipo de tupla Tuple.

La especialización de plantilla para matrices tiene un miembro value que es una expresión constante entera cuyo valor es Size, que es el tamaño de la matriz.

La especialización de plantilla para pares tiene un miembro value que es una expresión constante entera cuyo valor es 2.

Ejemplo

#include <tuple>
#include <iostream>

using namespace std;

typedef tuple<int, double, int, double> MyTuple;
int main()
{
    MyTuple c0(0, 1.5, 2, 3.7);

    // display contents "0 1 2 3"
    cout << get<0>(c0);
    cout << " " << get<1>(c0);
    cout << " " << get<2>(c0);
    cout << " " << get<3>(c0) << endl;

    // display size "4"
    cout << " " << tuple_size<MyTuple>::value << endl;
}
0 1.5 2 3.7
4

Requisitos

Encabezado<tuple>:

Encabezado:<array> (para la especialización de matrices)

Encabezado:<utility> (para la especialización de pares)

Espacio de nombres:std