2

以下の作品:

std::map<int,int> m{{1,2}};
std::tuple<std::map<int,int>,int> tm1{m, 2};
std::tuple<std::map<int,int>,int> tm2{{{1,2}}, 2};
std::tuple<std::map<int,int>,int> tmm1 = std::make_tuple(m, 2);

以下はしません:

std::tuple<std::map<int,int>,int> tmm2 = std::make_tuple({{1,2}}, 2);

追加の変数を使用せずに、make_tuple で作成されたタプル内のマップを初期化する方法はありますか?

4

1 に答える 1

1

make_tupleいいえ、この場合の最初の引数は initializer_list になるため、単に呼び出すことはできません。

手動で指定してください。

std::tuple<std::map<int,int>,int> tmm2 =
std::make_tuple<std::map<int, int>>({{1,2}}, 2);

init リストから一時的なマップを作成します。

std::tuple<std::map<int,int>,int> tmm2 =
std::make_tuple(std::map<int, int>{{1,2}}, 2);
于 2015-02-17T08:52:19.353 に答える