14 Member access control [class.access]

14.7 Nested classes [class.access.nest]

Вложенный класс является членом и поэтому имеет те же права доступа, что и любой другой член. Члены включающего класса не имеют специального доступа к членам вложенного класса; access rules должны соблюдаться обычные правила. [Example:

class E {
  int x;
  class B { };

  class I {
    B b;                        // OK: E​::​I can access E​::​B
    int y;
    void f(E* p, int i) {
      p->x = i;                 // OK: E​::​I can access E​::​x
    }
  };

  int g(I* p) {
    return p->y;                // error: I​::​y is private
  }
};

end example]