Стандарт C ++ 14 определяет функции-члены find () std::map
следующее:
iterator find(const key_type& x);
const_iterator find(const key_type& x) const;
Почему эти функции не определены как noexcept
? Что могло бы пойти не так внутри, что потребовало бы выбросить исключение или вызвать неопределенное поведение (кроме не нахождения элемента, в этом случае функция возвращает end
итератор и никакое исключение не потребовалось бы в любом случае)?
find()
основаны на Compare()
метод карты, который может вызвать исключение (представьте случай сложного ключа, который может быть неправильным). Таким образом, мы не можем быть уверены, что find()
не будет поднимать исключение.
Других решений пока нет …