C ++ map brace初始化和唯一ptr

时间:2017-11-25 07:56:19

标签: c++ dictionary c++14 std unique-ptr

为什么我不能使用unique_ptr使用map的括号初始化?

编辑:我在c ++ 17模式下使用gcc 7.2。

我可以使用make_pair和[]运算符创建并插入无序映射。

std::unordered_map<std::string, std::unique_ptr<A>> map;

map.insert(std::make_pair("hello",std::make_unique<A>()));
map["foo"] = std::make_unique<A>();

但我无法弄清楚使用大括号时失败的原因。

map.insert({"foo", std::make_unique<A>()}); // Error
  

错误:使用已删除的函数'std :: pair&lt; _T1,_T2&gt; :: pair(const std :: pair&lt; _T1,_T2&gt;&amp;)

0 个答案:

没有答案