【发布时间】:2018-04-26 00:19:04
【问题描述】:
我已经为一些 C 库实现了 C++ 绑定。库 API 调用可能会失败,但显然不能抛出任何东西;就这个问题而言,我的绑定都是内联的。
现在,对于我的大多数内联函数/方法,编译器可以确定不能抛出异常;例如,假设我有:
bool foo() {
auto result = wrapped_lib_foo();
return some_constexpr_nothrow_cond(result);
}
我应该用noexcept标记这些函数/方法吗?
注意事项:
- 不是Should I use noexcept for simple functions that obviously cannot throw? 的骗子,因为在这种情况下编译器不知道函数是否可以抛出;对于 C 函数 - 它确实知道。
- 更笼统的问题When should I really use noexcept? 的答案可能相互矛盾,此外,接受的答案来自 5 年前,并说“现在说还为时过早”。
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。