在C++中,嵌套类具有对封闭类的所有成员的访问权限.这是否也适用于嵌套类的嵌套类?
这段代码
#include <iostream>
class A
{
public:
class B
{
public:
B() { std::cout << A::x << std::endl; }
class C
{
public:
C() { std::cout << A::x << std::endl; }
};
};
private:
static const int x { 0 };
};
int main()
{
A::B b;
A::B::C c;
}
Run Code Online (Sandbox Code Playgroud)
在g ++ 7.2上编译时没有警告.但是,我不清楚这是否符合标准.标准草案(N4727 14.7)说:
嵌套类是成员,因此具有与任何其他成员相同的访问权限.
但是,在上面的示例C中不是其成员A,它是成员的成员.这里的标准模棱两可吗?g ++行为是否可移植?