C ++で内部クラスを定義した場合、それは自動的にそれを含むクラスのフレンドになりますか?たとえば、これは合法ですか?
class Outer {
public:
class Inner {
public:
void mutateOuter(Outer& o);
};
private:
int value;
};
void Outer::Inner::mutateOuter(Outer& o) {
o.value ++; // Legal? Or not?
}
私が試した一部のコンパイラ(VS2003)ではこのコードが機能しないため、質問しますが、少なくとも逸話的に、一部のコンパイラでは機能すると聞いています。私はこれについてC++仕様に関連するセクションを見つけることができません、そして誰かがそれが合法であるか合法でないかを言うであろう特定の何かを引用することができればそれは素晴らしいでしょう。