std::map emplace without copying value
The C++11 std::map<K,V> type has an emplace function, as do many other containers. std::map<int,std::string> m; std::string val {"hello"}; m.emplace(1, val); This code works as advertised, emplacing the std::pair<K,V> directly, however it results in a copy of key and val taking place. Is it possible to emplace the value type directly into the map as well? Can we do better than moving the arguments in the call to emplace ? Here's a more thorough example: struct Foo { Foo(double d, string s) {} Foo(const Foo&) = delete; Foo(Foo&&) = delete; } map<int,Foo> m; m.emplace(1, 2.3, string("hello")); /