以下代码有效吗?
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/