# std::tuple_size<std::tuple>

< cpp‎ | utility‎ | tuple

定义于头文件 `<tuple>` |  |
template< class... Types > struct tuple_size< std::tuple<Types...> > : std::integral_constant<std::size_t, sizeof...(Types)> { }; |  | (C++11 起)

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

## 继承自 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 value)
    {
        int a[std::tuple_size_v<T>]; // 能用于编译时

        std::cout << std::tuple_size<T>{} << ' ' // 或运行时
                  << sizeof a << ' '
                  << sizeof value << '\n';
    }

    int main()
    {
        test(std::make_tuple(1, 2, 3.14));
    }

可能的输出：

    3 12 16

### 参阅

结构化绑定 (C++17) | 绑定指定的名字到初始化器的子对象或元组元素
tuple_size (C++11) | 获得元组式类型的元素数 (类模板)
std::get(std::tuple) | 元组式访问指定的元素 (函数模板)