Я вижу, что insert
метод std::map
и std::unordered_map
будет меняться отстанд :: изменение :: Карта вставки в C++ 17
template<class P> std::pair<iterator,bool> insert(P&& value); (C++11)
в
std::pair<iterator,bool> insert(value_type&& value); (C++17)
Однако для них контейнеры, value_type
- std::pair<A const, int>
. Два вопроса здесь:
- Почему это изменение? Что такое потенциал роста?
- Как это будет работать, чтобы переместить ключ при вставке? Версия C++ 11 принимает что-либо (ограничение на
P
равноdefault_constructible<value_type, P&&>
), затемstd::pair<A, int>
, что в большинстве случаев является типом этого аргумента, так как оно возвращаетсяstd::make_pair
, - и может вызвать конструктор перемещенияA
. Но в версии C++ 17 этот аргумент отличен доvalue_type
, гдеA
является const, а затем не движется. A должен быть скопирован, если я не пропускаю что-то. Или C++ 17 что-то изменит с этой стороны?
Спасибо!
Похоже, эта функция была добавлена [LWG 2354] (http://wg21.link/lwg2354). –
Это не «от X до Y». Это дополнительная перегрузка. –