Inb*_*ong 6 c++ noexcept c++11
在下面的代码中,我认为断言不应该触发,但确实如此.
struct A
{
~A() noexcept(false);
};
A f() noexcept;
int main()
{
static_assert(noexcept(f()), "f must be noexcept");
}
Run Code Online (Sandbox Code Playgroud)
该函数f()显然是noexcept,但noexcept(f())被评估为false.(在gcc和clang中)
我错过了什么或者它是一个错误?
noexcept表达式上的运算符告诉e您表达式的潜在异常集是否为空。该集合包含析构函数的潜在异常,根据 [except.spec]/(13.2):
如果
e隐式调用一个或多个函数(例如重载运算符、new 表达式中的分配函数或析构函数,如果 e 是完整表达式 (1.9)),则S是以下各项的并集: [...]所有此类函数的异常规范中的类型集
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |