std::make_map?统一初始化

std::make_map? uniform initialization

以下作品:

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 生成的元组中的映射?

不,您不能只调用 make_tuple,因为在这种情况下第一个参数将是 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);