Se modificó el modificador privado de C ++ en una estructura anónima anidada

El siguiente código de ejemplo se compila bien en Visual C ++:

class Test {
private:
    struct {
        struct {
            int privateData;
        };
    };
};

int main(int, char **)
{
    Test test;
    test.privateData = 0;
    return 0;
}

¿Pero por qué? Yo esperaría un error de compilador porque elprivateData miembro debe ser inaccesible a la función principal, ya que se supone que esprivate como el contenedor de su contenedor. Sé que las estructuras sin nombre no forman parte de C ++ oficial, pero este diseño es original.

Por cierto también he intentado cambiarprivate dentroprotected ystruct dentrounion: parece que el compilador se niega a respetar los modificadores de acceso en estructuras anónimas y uniones que están anidadas dentro de otra estructura anónima o unión.

¿Alguien puede explicar esta característica?

Respuestas a la pregunta(1)

Su respuesta a la pregunta