以下代码有效吗?

struct A
{
    struct nested;
};

struct B : public A {};

struct B::nested {};

gcc接受它,但是clang拒绝它并出现以下错误:
test.cpp:8:14: error: no struct named 'nested' in 'B'
    class B::nested {};
          ~~~^

最佳答案

是的,它无效。这是报价。

第9节第11段,重点是:



在您的示例中,class-head-name是标记B::nested,它由嵌套名称说明符B::和类名nested组成。类说明符是整个struct B::nested { ... }

关于c++ - 基类的嵌套类的离线定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18818315/

10-11 07:49