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

时间:2018-06-08 16:26:44

标签: c++ c++11 iterator c++17 const-iterator

根据https://jsfiddle.net/e3aqnwb8/iterator erase( const_iterator pos );必须隐式转换为iterator erase( iterator pos );。既然如此,正如我们在this answer中看到的那样,为什么在C ++ 17中添加了insert_or_assign()的新签名?

在C ++ 11中,我们有iterator

在C ++ 17中,我们现在有const_iterator

C ++ 11签名是否足以接收{{1}}和{{1}}?

1 个答案:

答案 0 :(得分:26)

传递erase(const key_type& key)时,iterator可能存在歧义。考虑key_type类似于std::any的情况。

相关问题