std::tuple_size<std::tuple>
来自cppreference.com
                    
                                        
                    
                    
                                                            
                    |   定义于头文件  <tuple>
  | 
||
|   template< class T > class tuple_size; /*undefined*/  | 
(1) | (C++11 起) | 
|   template< class... Types > class tuple_size< std::tuple<Types...> >  | 
(2) | (C++11 起) | 
|   定义于头文件  <tuple>
  | 
||
|   定义于头文件  <array>
  | 
(C++17 起)  | 
|
|   定义于头文件  <utility>
  | 
(C++17 起)  | 
|
|   定义于头文件  <ranges>
  | 
(C++20 起)  | 
|
|   template< class T > class tuple_size<const T>  | 
(3) | (C++11 起) | 
|   template< class T > class tuple_size< volatile T >  | 
(4) |  (C++11 起)  (C++20 中弃用)  | 
|   template< class T > class tuple_size< const volatile T >  | 
(5) |  (C++11 起)  (C++20 中弃用)  | 
提供对 tuple 中元素数量的访问,作为编译时常量表达式。
在通过包含 <tuple> 头文件变得合法以外,模板 (3-5) 在包含头文件 <array> 或 <utility> 时可用。
所有 std::tuple_size 的特化满足基特征对于某些 N 为 std::integral_constant<std::size_t, N> 的一元类型特征 (UnaryTypeTrait) 。
| 
 cv-T 模板 (3-5) 是 SFINAE 友好的:若  #include <utility> struct X { int a, b; }; const auto [x, y] = X(); // 结构化绑定声明首先尝试 tuple_size<const X> // 这试图使用 tuple_size<X>::value ,而那是 OK 的  | 
(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 的大小  (类模板特化)  | |
|    (C++11)  | 
  获得 pair 的大小  (类模板特化)  | 
|   元组式访问指定的元素  (函数模板)  | |
|   获得指定元素的类型  (类模板特化)  |