初始化初始化列表中的unordered_map

ily*_*725 7 c++ unordered-map initialization c++11 c++14

我正试图找到一个可能是一个非常微不足道的问题的解决方案.我想const unordered_map在类初始化列表中初始化我.但是我还没有找到编译器(GCC 6.2.0)将接受的语法.代码链接在这里.

#include <unordered_map>

class test {
 public:
    test()
      : map_({23, 1345}, {43, -8745}) {}

 private:
   const std::unordered_map<long, long> map_;
 };
Run Code Online (Sandbox Code Playgroud)

错误:

main.cpp: In constructor 'test::test()':
main.cpp:6:36: error: no matching function for call to 'std::unordered_map<long int, long int>::unordered_map(<brace-enclosed initializer list>, <brace-enclosed initializer list>)'
  : map_({23, 1345}, {43, -8745}) {}
                                ^
Run Code Online (Sandbox Code Playgroud)

复制常量是否不允许在初始化列表中初始化?或者语法必须不同?

Vla*_*cow 10

使用大括号而不是括号

class test {
 public:
    test()
      : map_{{23, 1345}, {43, -8745}} {}

 private:
   const std::unordered_map<long, long> map_;
 };
Run Code Online (Sandbox Code Playgroud)