なぜマップのブレースの初期化をunique_ptrと併用できないのですか?C++マップブレースの初期化とユニークなptr
編集:g ++ 7.2をC++ 17モードで使用します。
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>();
しかし、中括弧を使用すると失敗する理由はわかりません。 C++ 11は
map.insert({"foo", std::make_unique<A>()}); // Error
error: use of deleted function ‘std::pair<_T1, _T2>::pair(const std::pair<_T1, _T2>&)
を持っているあなたは、C++ 14を使用しています。 – Rakete1111
afaik挿入コピー(unique_ptrはコピー不可)、emplace – Sopel