std::tuple_size<std::tuple>

来自cppreference.com
< cpp‎ | utility‎ | tuple
定义于头文件 <tuple>
template< class T >
class tuple_size; /*undefined*/
(1) (C++11 起)
template< class... Types >

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

 : public std::integral_constant<std::size_t, sizeof...(Types)> { };
(2) (C++11 起)
定义于头文件 <tuple>
定义于头文件 <array>
定义于头文件 <utility>
(C++17 起)
(C++17 起)
template< class T >

class tuple_size<const T>

 : public std::integral_constant<std::size_t, tuple_size<T>::value> { };
(3) (C++11 起)
template< class T >

class tuple_size< volatile T >

 : public std::integral_constant<std::size_t, tuple_size<T>::value> { };
(4) (C++11 起)
template< class T >

class tuple_size< const volatile T >

 : public std::integral_constant<std::size_t, tuple_size<T>::value> { };
(5) (C++11 起)

提供对 tuple 中元素数量的访问,作为编译时常量表达式。

在通过包含 <tuple> 头文件变得合法以外,模板 (3-5) 在包含头文件 <array> 或 <utility> 时可用。

所有 std::tuple_size 的特化满足 BaseCharacteristic (基性质)对于某些 Nstd::integral_constant<std::size_t, N>一元类型特性 (UnaryTypeTrait) 。

cv-T 模板 (3-5) 是 SFINAE 友好的:若 std::tuple_size<T>::value 在视作不求值运算数时为病态,则 (3-5) 不提供成员 value 。访问检查如同在无关于 tuple_sizeT 的语境进行。仅考虑表达式直接语境的合法性。

(C++17 起)

目录

[编辑] 帮助变量模板

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

继承自 std::integral_constant

成员常量

value
[静态]
sizeof...(Types)
(公开静态成员常量)

成员函数

operator std::size_t
转换对象为 std::size_t ,返回 value
(公开成员函数)
operator()
(C++14)
返回 value
(公开成员函数)

成员类型

类型 定义
value_type std::size_t
type std::integral_constant<std::size_t, value>

[编辑] 示例

#include <iostream>
#include <tuple>
 
template <class T>
void test(T t)
{
    int a[std::tuple_size<T>::value]; // 可在编译时
 
    std::cout << std::tuple_size<T>::value << '\n'; // 或在运行时使用
}
 
int main()
{
    test(std::make_tuple(1, 2, 3.14));
}

输出:

3

[编辑] 参阅

获得array的大小
(类模板特化) [编辑]
获得pair的大小
(类模板特化) [编辑]
访问tuple的指定元素
原文:
tuple accesses specified element
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板) [编辑]
获得指定的元素的类型
原文:
obtains the type of the specified element
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(类模板特化) [编辑]