Новая подпись std :: map :: erase () C ++ 17 - PullRequest
0 голосов
/ 08 июня 2018

Согласно этому ответу , iterator должен быть неявно преобразован в const_iterator.Поскольку это так, как мы видим в insert_or_assign(), то почему в C ++ 17 была добавлена ​​новая подпись к std::map::erase()?

В C ++ 11 у нас есть iterator erase( const_iterator pos );

В C ++ 17 у нас теперь есть iterator erase( iterator pos );

Не достаточно ли подписи C ++ 11 достаточно, чтобы получить iterator и const_iterator?

1 Ответ

0 голосов
/ 08 июня 2018

Существует потенциальная двусмысленность с erase(const key_type& key), когда вы передаете iterator.Рассмотрим случай, когда key_type является чем-то вроде std::any.

...