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

29
根据这个答案,一个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吗?
1个回答

26

当您传递一个迭代器时,erase(const key_type& key) 存在潜在的歧义。考虑 key_type 类型类似于 std::any 的情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接