这个noexcept声明有效吗?

时间:2019-04-14 16:30:03

标签: c++ visual-c++ g++ clang++

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中的错误,而不是其他功能。正确吗?

1 个答案:

答案 0 :(得分:4)

您的评估是correct

  

在类成员规范中,该类在函数体,默认参数,noexcept-specifiers和默认成员初始化程序(包括嵌套类中的此类)内被视为完整的。否则,在其自己的类成员规范中,它被认为是不完整的。

在完整类型的范围内,unqualified name lookup应该找到g