왜 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>();
하지만 중괄호를 사용할 때 왜 실패하는지 알 수 없습니다.
map.insert({"foo", std::make_unique<A>()}); // Error
error: use of deleted function ‘std::pair<_T1, _T2>::pair(const std::pair<_T1, _T2>&)
C++ (17) 우리는 또한이 대신
. – Rakete1111
afaik 삽입 사본 (unique_ptr은 복사 불가), emplace – Sopel