根据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}}?
答案 0 :(得分:26)
传递erase(const key_type& key)
时,iterator
可能存在歧义。考虑key_type
类似于std::any
的情况。