loop instead for based c++ c++11 iterator c++17 const-iterator

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 ?