新的std :: map :: erase()签名C++ 17

Joã*_*ulo 29 c++ iterator const-iterator c++11 c++17

根据这个答案,iterator必须可以隐含地转换为const_iterator.insert_or_assign()既然如此,正如我们可以看到的那样,为什么在C++ 17中添加了新的签名std::map::erase()

在C++ 11中,我们有 iterator erase( const_iterator pos );

在C++ 17中,我们现在有了 iterator erase( iterator pos );

是不是C++ 11签名足以接收iteratorconst_iterator

T.C*_*.C. 26

erase(const key_type& key)当你通过时,有一种潜在的模糊性iterator.考虑key_type类似的情况std::any.