Я реализовал привязки С++ для некоторой библиотеки C. Библиотечные вызовы API могут терпеть неудачу, но, очевидно, ничего не могут выбросить; и мои привязки для целей этого вопроса являются встроенными.
Теперь, для большинства моих встроенных функций/методов компилятор может определить, что исключение не может быть выбрано; например, предположим, что у меня есть:
bool foo() {
auto result = wrapped_lib_foo();
return some_constexpr_nothrow_cond(result);
}
Я должен отмечать такие функции/методы с помощью noexcept
?
Примечания:
- Не обманывать Должен ли я использовать noexcept для простых функций, которые явно не могут выбрасывать?, так как в этом случае компилятор не знает, может ли функция запускать или не; для функций C - он знает.
- Более общий вопрос Когда я действительно использую noexcept? имеет потенциально противоречивые ответы, плюс, принятый ответ от 5 лет назад и говорит: "Слишком рано говорят".