この回答 によると、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署名は、iterator
および_const_iterator
_を受け取るのに十分ではありませんでしたか?
iterator
を渡すと、erase(const key_type& key)
にあいまいさが生じる可能性があります。 key_type
がstd::any
のようなものである場合を考えてみましょう。