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

Pow*_*mer 6 c++ dictionary exception-specification noexcept

C++ 14标准定义了find()成员函数,std::map如下所示:

iterator find(const key_type& x);
const_iterator find(const key_type& x) const;
Run Code Online (Sandbox Code Playgroud)

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

888*_*877 5

find()基于Compare()map 的方法,可能会抛出异常(想象一下可能不正确的复杂键的情况).所以,我们不能确定find()不会引发异常.