instead - Nuevo std:: map:: erase() signature C++ 17
list iterator c++ (1)
Existe una ambigüedad potencial con el erase(const key_type& key) cuando pasa un iterator . Considere el caso donde el key_type es algo como std::any .
De acuerdo con esta respuesta , un iterator debe ser convertible implícitamente a const_iterator . Dado que eso es cierto, como podemos ver que sucede en insert_or_assign() , entonces ¿por qué en C ++ 17 se agregó una nueva firma a std::map::erase() ?
En C ++ 11, tenemos el iterator erase( const_iterator pos );
En C ++ 17, ahora tenemos el iterator erase( iterator pos );
¿No fue la firma C ++ 11 lo suficientemente buena para recibir iterator y const_iterator ?