- tuple[meta header]
- std[meta namespace]
- function template[meta id-type]
- cpp11[meta cpp]
namespace std {
template <class... Tuples>
tuple<Ctypes ...> tuple_cat(Tuples&&...); // C++11
template <class... Tuples>
constexpr tuple<Ctypes ...> tuple_cat(Tuples&&...); // C++14
}
Tuples...
の全ての型がstd::tuple<Args...>
であること。Args...
の各型が左辺値参照であればコピー構築可能、そうでなければムーブ構築可能であること。
Tuples...
の全てのtuple
型の要素型全てを取り出し、std::
forward
<T>(x)
して構築される1つのtuple
オブジェクト。
実装によっては、Tuples...
パラメータパックに含めることのできる型として、他のタプルライクな型(pair
やarray
のような)を追加的にサポートする可能性がある。
#include <iostream>
#include <tuple>
#include <string>
int main()
{
std::tuple<int, std::string> t1(1, "Hello");
std::tuple<char, double> t2('a', 3.14);
std::tuple<std::string> t3("World");
// 3つのtupleを繋ぎ合わせる
std::tuple<int, std::string, char, double, std::string> result =
std::tuple_cat(t1, t2, t3);
std::cout << std::get<0>(result) << std::endl;
std::cout << std::get<1>(result) << std::endl;
std::cout << std::get<2>(result) << std::endl;
std::cout << std::get<3>(result) << std::endl;
std::cout << std::get<4>(result) << std::endl;
}
- std::tuple_cat[color ff0000]
- std::tuple[link tuple.md]
- std::get[link tuple/get.md]
1
Hello
a
3.14
World
- C++11
- Clang: ??
- GCC: 4.6.1
- ICC: ??
- Visual C++: ??