std :: map вставлять без копирования значения

C ++ 11std::map<K,V> тип имеетemplace функция, как и многие другие контейнеры.

std::map<int,std::string> m;

std::string val {"hello"};

m.emplace(1, val);

Этот код работает как рекламируется, используяstd::pair<K,V> напрямую, однако это приводит к копииkey а такжеval происходит.

Можно ли включить тип значения непосредственно в карту? Можем ли мы сделать лучше, чем переместить аргументы в вызовеemplace?

Вот более подробный пример:

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")); // invalid

Ответы на вопрос(2)

Ваш ответ на вопрос