The following builds in VS 2010:
class C1
{
private:
    enum E {E_VAL};
    static void methC1() {}
public:
    class C2
    {
    public:
        class C3
        {
        public:
            void methC3() 
            {
                int a=E_VAL; // this surprised me
                methC1();    // and this too
            }
        };
    };
};
int main() 
{
    C1::C2::C3 obj;
    obj.methC3();
}
Is this standard? I saw this other SO post where an answer compares inner classes to friend classes, but a friend of a friend is not a friend, so wondering what standard says.
 
     
    