Почему std::map find() не объявлено как noexcept?

Стандарт C++14 определяет функции-члены find() std::map следующее:

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

Почему эти функции не определены как noexcept? Что могло бы пойти не так внутри, что потребовало бы выбросить исключение или вызвать неопределенное поведение (кроме не нахождения элемента, в этом случае функция возвращает end итератор и никакое исключение не потребовалось бы в любом случае)?

1 ответ

Решение

find() основаны на Compare() метод карты, который может вызвать исключение (представьте случай сложного ключа, который может быть неправильным). Таким образом, мы не можем быть уверены, что find() не будет поднимать исключение.

Другие вопросы по тегам