标准中 override 和 noexcept 的顺序

2024-01-30

override 和 noexcept 的顺序是标准所要求的吗?

class Base
{
public:
  virtual void foo() {}
};

class Derived : public Base
{
public:
  // virtual void foo() override {} // Ok
  // virtual void foo() noexcept {} // Ok
  // virtual void foo() noexcept override {} // Ok
  virtual void foo() override noexcept {} // Error
};

int main() {}

我正在使用 gcc 4.7.2。


在 8.3.5 [dcl.fct] 中我们看到:

D1 ( 参数声明子句 ) cv-qualifier-seq opt ref-qualifier opt 异常规范 opt attribute-specifier-seq opt

...在 9.2 [class.mem] 中我们看到:

声明符 virt-说明符-seq opt pure-说明符 opt

这表明override and final必须在之后noexcept.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

标准中 override 和 noexcept 的顺序 的相关文章

随机推荐