Класс tuple_size
Передает число элементов, содержащихся в кортеже tuple
.
Синтаксис
// 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;
Параметры
Tuple
Тип кортежа.
Elem
Тип элементов массива.
Size
Размер массива.
T1
Тип первого элемента пары.
T2
Тип второго элемента пары.
Types
Типы элементов кортежа.
Замечания
Шаблон класса имеет элемент value
, который является целочисленным константным выражением, значение которого является экстентом типа Tuple
кортежа.
В специализации шаблона для массивов есть член value
, который представляет собой интегральное константное выражение со значением Size
, равным размеру массива.
В специализации шаблона для пар есть член value
, который представляет собой интегральное константное выражение со значением 2.
Пример
#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
Требования
Заголовок: <tuple>
Заголовок: <array>
(для специализации массива)
Заголовок: <utility>
(для специализации пары)
Пространство имен: std