派生类中的析构函数标记为noexcept(false)

5
有以下代码:

code

class Member
{
public:
  ~Member() noexcept(false) {}
};

class A
{
public:
  virtual ~A() {}
};

class B : public A
{
public:
  Member m;
};

错误信息如下:
main.cpp:13:7: error: looser throw specifier for ‘virtual B::~B() noexcept (false)’
 class B : public A
       ^
main.cpp:10:11: error:   overriding ‘virtual A::~A() noexcept’
   virtual ~A() {}
           ^

为什么类B中的析构函数标记为noexcept(false)?似乎是从成员类中继承而来。这是由g++ 6.3编译的。
1个回答

9

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接