Должен ли я добавлять noexcept к каждой функции, если нет исключений?

Я никогда не использую исключения в своем коде и никогда не буду. Разумно ли добавлять noexcept ко всем возможным функциям?

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


person Alex Wennström    schedule 13.05.2020    source источник
comment
Отвечает ли это на ваш вопрос? Когда мне действительно следует использовать noexcept?   -  person John Ding    schedule 13.05.2020
comment
Это происходит: функциям без генерирования разрешено вызывать потенциально генерирующие функции. Всякий раз, когда генерируется исключение и поиск обработчика обнаруживает самый внешний блок функции, не вызывающей исключение, вызывается функция std::terminate (cppreference). Но не в руках бедных пользователей решать, вызывает ли функция, которую вы используете для внутреннего использования, броски и приводит к завершению программы.   -  person StefanKssmr    schedule 13.05.2020
comment
Я читал это, Джон Динг. Интересное чтение, но никто никогда не упоминает, когда исключения отключены, это полезно в этом случае или нет. На самом деле я задаю этот вопрос, потому что я обыскал все и ничего не нашел.   -  person Alex Wennström    schedule 13.05.2020
comment
Спасибо, Стефан, вы правы, noexcept говорит, что эта конкретная функция не сама генерирует исключения, но могут вызывать внутренние вызовы функций.   -  person Alex Wennström    schedule 13.05.2020
comment
На самом деле в посте выше есть парень, у которого есть хорошее замечание, почему они не сделали дизайн, в котором вы вместо noexcept говорите, что функция будет бросать, что избавит от избыточного ввода.   -  person Alex Wennström    schedule 13.05.2020