std::tuple_cat
定义于头文件 <tuple>
|
||
template< class... Tuples > std::tuple<CTypes...> tuple_cat(Tuples&&... args); |
(C++11 起) (C++14 前) |
|
template< class... Tuples > constexpr std::tuple<CTypes...> tuple_cat(Tuples&&... args); |
(C++14 起) | |
构造所有 args
中的 tuple 所连接成 tuple 。
若 std::decay_t<Tuples>... 中的任何类型不是 std::tuple 的特化则行为未定义。然而,实现可以选择支持遵循仿 tuple 协议的类型(例如 std::array 与 std::pair )。
参数
args | - | 要连接的零或更多 tuple |
返回值
std::tuple 对象,由所有参数 tuple 的所有元素组成,对于每个独立元素构造自 std::get<i>(std::forward<Ti>(arg)) 。
示例
运行此代码
#include <iostream> #include <tuple> #include <string> // 打印任何大小 tuple 的帮助函数 template<class Tuple, std::size_t N> struct TuplePrinter { static void print(const Tuple& t) { TuplePrinter<Tuple, N-1>::print(t); std::cout << ", " << std::get<N-1>(t); } }; template<class Tuple> struct TuplePrinter<Tuple, 1> { static void print(const Tuple& t) { std::cout << std::get<0>(t); } }; template<class... Args> void print(const std::tuple<Args...>& t) { std::cout << "("; TuplePrinter<decltype(t), sizeof...(Args)>::print(t); std::cout << ")\n"; } // 结束帮助函数 int main() { std::tuple<int, std::string, float> t1(10, "Test", 3.14); int n = 7; auto t2 = std::tuple_cat(t1, std::make_tuple("Foo", "bar"), t1, std::tie(n)); n = 10; print(t2); }
输出:
(10, Test, 3.14, Foo, bar, 10, Test, 3.14, 10)
参阅
创建一个 tuple 对象,其类型根据各实参类型定义 (函数模板) | |
创建左值引用的 tuple ,或将 tuple 解包为独立对象 (函数模板) | |
创建转发引用的 tuple (函数模板) |