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中的错误,而不是其他功能。正确吗?
答案 0 :(得分:4)
您的评估是correct
在类成员规范中,该类在函数体,默认参数,noexcept-specifiers和默认成员初始化程序(包括嵌套类中的此类)内被视为完整的。否则,在其自己的类成员规范中,它被认为是不完整的。
在完整类型的范围内,unqualified name lookup应该找到g
。