29 votes

Nouvelle signature std :: map :: erase () C ++17

Selon cette réponse, un iterator doit être implicitement convertible const_iterator. Car ce qui est vrai, comme nous pouvons le voir se produire en insert_or_assign(), alors pourquoi en C++17 a été une nouvelle signature ajoutée à l' std::map::erase()?

En C++11, nous avons iterator erase( const_iterator pos );

En C++17, nous avons maintenant iterator erase( iterator pos );

N'était pas le C++11 signature assez bon pour recevoir iterator et const_iterator?

26voto

T.C. Points 22510

Il y a une ambiguïté potentielle avec erase(const key_type& key) lorsque vous passez un iterator . Considérez le cas où le key_type est quelque chose comme std::any .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X