来自gcc c ++ 11的无法解释的``松散投掷符''错误

时间:2018-10-29 17:13:31

标签: c++ c++11

以下代码在使用gcc 5.4.0进行编译时显示“失败者抛出说明符错误”。我不明白为什么。

class Err {
};

class A {
    public:
        A() {}
        ~A() throw(Err) {}
};

class Base {
    public:
        inline Base()  { }
        inline virtual ~Base() { }
};

class Derived : public virtual Base {
    public:
        A a;
        Derived() { }
};

int main()
{
    return 0;
}

* g ++ --std = c ++ 11 -m64 -Wtype-limits -Wextra -ggdb -Wall -Werrorlackrthrow.cpp -oloederthrow

looserthrow.cpp:16:7:错误:“ virtual Derived ::〜Derived()throw(Err)”的较宽松的抛出说明符  派生的类:public virtual Base {        ^

looserthrow.cpp:13:24:错误:覆盖了“虚拟Base ::〜Base()noexcept”          内联虚拟〜Base(){}                         ^ *

请注意此代码的微妙之处与以前的主题不同。这里的基类没有抛出说明符。那么Derived类怎么会有一个宽松的throw说明符。

0 个答案:

没有答案