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 ( parameter-declaration-clause ) cv-qualifier-seq opt ref-qualifier opt exception-specification opt attribute-specifier-seq opt
...在 9.2 [class.mem] 中我们看到:
declarator virt-specifier-seq opt pure-specifier opt
这说明 override
和 final
必须在 noexcept
之后。
关于c++ - 标准中override和noexcept的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21577466/