【问题标题】:std::make_map? uniform initializationstd::make_map?统一初始化
【发布时间】:2015-02-17 08:44:17
【问题描述】:

以下作品:

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 制作的元组中初始化映射?

【问题讨论】:

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


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-10
      • 1970-01-01
      • 2020-03-18
      • 1970-01-01
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      相关资源
      最近更新 更多