std::tuple_element<std::tuple>
来自cppreference.com
在标头 <tuple> 定义
|
||
template< std::size_t I, class... Types > class tuple_element< I, tuple<Types...> >; |
(C++11 起) | |
提供 tuple 元素类型的编译时带下标访问。
成员类型
成员类型 | 定义 |
type | tuple 的第 I 元素的类型,其中 I 在 [0, sizeof...(Types)) 中
|
可能的实现
template< std::size_t I, class T > struct tuple_element; // 递归情况 template< std::size_t I, class Head, class... Tail > struct tuple_element<I, std::tuple<Head, Tail...>> : std::tuple_element<I-1, std::tuple<Tail...>> { }; // 基础情况 template< class Head, class... Tail > struct tuple_element<0, std::tuple<Head, Tail...>> { using type = Head; }; |
示例
运行此代码
#include <iostream> #include <tuple> template <class... Args> struct type_list { template <std::size_t N> using type = typename std::tuple_element<N, std::tuple<Args...>>::type; }; int main() { std::cout << std::boolalpha; type_list<int, char, bool>::type<2> x = true; std::cout << x << '\n'; }
输出:
true
参阅
结构化绑定 (C++17) | 绑定指定的名字到初始化器的子对象或元组元素 |
(C++11) |
获得元组式类型的元素数 (类模板) |
(C++11) |
元组式访问指定的元素 (函数模板) |