Ответ 1
Там, где вы передаете iterator
существует потенциальная двусмысленность со erase(const key_type& key)
. Рассмотрим случай, когда key_type
является чем-то вроде std::any
.
Согласно этому ответу, iterator
должен быть неявно конвертируемым в const_iterator
. Так как это правда, как мы видим, что происходит в insert_or_assign()
, то почему в С++ 17 была добавлена новая подпись в std::map::erase()
?
В С++ 11 мы iterator erase( const_iterator pos );
В С++ 17 теперь мы iterator erase( iterator pos );
Не была ли сигнатура С++ 11 достаточной для получения iterator
и const_iterator
?
Там, где вы передаете iterator
существует потенциальная двусмысленность со erase(const key_type& key)
. Рассмотрим случай, когда key_type
является чем-то вроде std::any
.