为什么 std::map find() 没有声明为 noexcept?

Why std::map find() is not declared as noexcept?

C++14标准定义std::map的find()成员函数如下:

iterator find(const key_type& x);
const_iterator find(const key_type& x) const;

为什么这些函数没有定义为noexcept?内部可能出现什么问题,这将需要抛出异常或产生未定义的行为(除了找不到元素,在这种情况下函数 returns 一个 end 迭代器并且无论如何都不需要抛出异常)?

find() 是基于地图的 Compare() 方法,这可能会引发异常(想象一下复杂键可能不正确的情况)。所以,我们不能确定 find() 不会引发异常。