Acceso de miembro de clase anidado en C ++ 11

En C ++ 11, estoy tratando de acceder a una variable miembro de una clase adjunta desde una clase anidada de la siguiente manera:

struct Enclosing {
    int a;
    struct Nested {
        int f() {
            return a;
        }
    };
};

Incluso esto no se compila usando g ++ 4.7.2 con -std = c ++ 11, produciendo mensajes de error de esta forma:

error: invalid use of non-static data member 'Enclosing::a'

Por lo que yo entiendo, C ++ 11 trata a una clase anidada como un miembro de la clase, de modo que supuestamente una clase anidada puede acceder a todos los demás miembros de la clase adjunta. ¿Hice algo mal? Gracias por adelantado.

Actualizar:

Si bien mi pregunta parece tener una respuesta a continuación, no estoy convencido de que esto se marque como duplicado.

Soy consciente de las discusiones sobre la relación entre las clases anidadas y las clases adjuntas antes del estándar C ++ 11, después de muchas búsquedas antes de publicar una pregunta.

Las discusiones relevantes anteriores como esta citan algunas "actualizaciones" en C ++ 11, p.Accesibilidad a clases anidadas en C ++

Pero no estaba muy claro, al menos según las respuestas que leí, en toda su extensión que C ++ 11 es "diferente" de las versiones anteriores en este asunto.

Técnicamente, la solución a mi pregunta existe en hilos más antiguos comoMiembros anidados de la clase 'acceso a los datos privados de la clase adjunta', un hecho que tenía que ser señalado, por tonto que me parezca. Pero no encontré ninguna respuesta que ponga C ++ 11 en contexto; al menos, no creo que mi pregunta pueda considerarse justamente un "duplicado" de una pregunta hecha antes del estándar C ++ 11.

Respuestas a la pregunta(2)

Su respuesta a la pregunta