struct X
{
void f() noexcept(noexcept(g()));
void g() noexcept;
};
在vc ++和clang中,这有效,但是gcc抱怨道:
source_file.cpp:6:34: error: ‘g’ was not declared in this scope
void f() noexcept(noexcept(g()));
^
我认为这是gcc中的一个错误,而不是其他的一个功能。那是对的吗?
你的评估是correct
在类成员规范中,该类在函数体,默认参数,noexcept-specifiers和默认成员初始化器(包括嵌套类中的这类事物)中被视为完整。否则,它在其自己的类成员规范中被视为不完整。
在完整类型的范围内,g
应该找到unqualified name lookup。