的std :: make_map?统一初始化

时间:2015-02-17 08:44:18

标签: c++ initializer-list stdmap uniform-initialization stdtuple

以下作品:

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制作的元组内的地图?

1 个答案:

答案 0 :(得分:1)

不,你不能只调用make_tuple,因为在这种情况下,第一个arg将是initializer_list。

手动指定。

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

从初始列表创建临时地图。

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