以下作品:
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制作的元组内的地图?
答案 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);