Почему 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 итератор и никакое исключение не потребовалось бы в любом случае)?

6

Решение

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

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]