Mat*_* F. 5 c++ compiler-construction noexcept
我们举个例子
class X
{
int value;
public:
X (int def = 0) : value (def) {}
void add (int i)
{
value += i;
}
};
Run Code Online (Sandbox Code Playgroud)
显然,该函数void X::add (int)永远不会抛出任何异常.
我的问题是,编译器是否可以分析代码并决定不生成机器代码来处理异常,即使函数没有标记为noexcept?
如果编译器可以证明某个函数永远不会抛出,那么"As-If"规则(§1.9,"C++标准的"程序执行")允许删除处理异常的代码.
然而,它不可能决定一个功能,不会抛出一般,因为它相当于解决停机问题.
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |