namespace std {
template <class... Types>
tuple<VTypes ...> make_tuple(Types&&...); // C++11
template <class... Types>
constexpr tuple<VTypes ...> make_tuple(Types&&...); // C++14
}
概要
渡された可変個パラメータのコピーからtuple
型のオブジェクトを構築する。
戻り値
パラメータパックの値からなるtuple
オブジェクトを返す。
- C++11 :
Types...
の各型T
において、std::decay<T>::type
の結果型を使用し、- かつ型
T
がstd::reference_wrapper
型であった場合T&
型を使用する
- C++20 :
Types...
の各型T
において、std::unwrap_ref_decay_t<T>
を適用した型を使用する
例
#include <tuple>
#include <string>
#include <functional>
int main()
{
// 渡した値からtupleを構築
std::tuple<int, char, const char*> t1 = std::make_tuple(1, 'a', "Hello");
// tupleのコンストラクタによってconst char*をstd::stringに型変換
std::tuple<int, char, std::string> t2 = std::make_tuple(1, 'a', "Hello");
int a = 1;
char b = 'b';
std::string c = "hello";
// 変数のコピーからtupleを構築
std::tuple<int, char, std::string> t3 = std::make_tuple(a, b, c);
// 変数の一部を参照と見なしてtupleを構築
std::tuple<int, char&, const std::string&> t4 = std::make_tuple(a, std::ref(b), std::cref(c));
}
出力
バージョン
言語
- C++11
処理系
- Clang: ?
- GCC: 4.6.1 ✅
- ICC: ?
- Visual C++: 2008 ✅, 2010 ✅