[완료] 접근 제한자를 무시하는 C++의 nested class

klara의 이미지

class A {
public:
	class B;
	A(): value(0) {}
private:
	int value;
};
 
class A::B {
public:
	void setValue(A &a) {a.value = 2;}
};
 
int main() {
	A a;
	A::B b;
	b.setValue(a);
	return 0;
} 

요런 테스트 코드를 만들어 보았습니다. A::B::setValue 함수는 클래스 A의 private멤버인 value에 접근하고 있고, A::B는 A의 friend class가 아니므로 컴파일에러가 날것이라고 생까했는데, 전혀 에러없이 그냥 컴파일이 되버리더군요.
nested class에 대해서는 접근 제한자가 적용되지 않는 듯한데, 이것은 정상적인 것인가요..? 아니면 컴파일러의 버그인걸까요? 참고로 사용한 컴파일러는 gcc(g++)4.3.2 입니다.
klara의 이미지