Согласно этому ответу, 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?