noexcept:clang ++和g ++上的不同行为

时间:2015-06-07 07:28:26

标签: c++ c++11 gcc clang noexcept

#include <iostream>
using namespace std;
class A
{
    public:
    void g() noexcept {}
    void f() noexcept( noexcept( g() )) {};
};

A a;
int main()
{
    cout<<noexcept(a.f())<<endl;
    return 0;
}

当我尝试用gcc 5.1.1编译这个程序时,我收到了一个错误 -

  

错误:如果没有对象'void A :: g()'

,则无法调用成员函数      

|| void f()noexcept(noexcept(g())){};

但是,在clang ++ 3.6中,这可以编译,输出为1

有什么方法可以解决这个问题吗?

0 个答案:

没有答案