gpt4 book ai didi

c++ - 编译器可以决定函数的 noexcept'ness 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:23:29 24 4
gpt4 key购买 nike

举个例子

class X
{
int value;
public:
X (int def = 0) : value (def) {}

void add (int i)
{
value += i;
}
};

显然,函数 void X::add (int) 永远不会抛出任何异常。

我的问题是,编译器能否分析代码并决定不生成机器代码来处理异常,即使该函数未标记为 noexcept

最佳答案

如果编译器可以证明一个函数永远不会抛出异常,则“As-If”规则(§1.9,C++ 标准的“程序执行”)允许删除处理异常的代码。

但是,无法确定一个函数是否永远不会抛出一般情况,因为这相当于解决了停机问题。

关于c++ - 编译器可以决定函数的 noexcept'ness 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38716837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com