Podríamos acceder al miembro de un objeto de tipo de clase no existente?

En el estándar c ++, en [basic.lval] /11. dice

Si un programa intenta acceder al valor almacenado de un objeto a través de un valor gl diferente de uno de los siguientes tipos, el comportamiento no está definido: [...]

un tipo agregado o de unión que incluye uno de los tipos mencionados anteriormente entre sus elementos o miembros de datos no estáticos (incluido, recursivamente, un elemento o miembro de datos no estático de un subaggregado o unión contenida), [...]

sta frase es parte de la estricto aliasing regla.

Nos permite alias a través del acceso de miembros de la clase?

class A{ //"casted to" aggregate
  int i;
  float g;
  };

int j=10;
int l = reinterpret_cast<A*>(&j)->i;

egún el estándar, solo se accede a un valor de objeto si el objeto está sujeto a lvalue-to-rvalue-conversion [conv.lval] / 2.

[expr.ref] no estipula que la expresión-objeto debe referirse a un objeto de ese tipo, solo que el valor gl debe tener un tipo de clase (el expresión-objeto es la expresión a la izquierda del punto "."). Sin embargo, hay una palabra que aparece de manera recurrente en la oración relacionada con el acceso de los miembros, lo que puede implicar una restricción en el programa que pasé por alto. Por ejemplo [expr.ref] /4.:

Si E2 es un miembro de datos estático y el tipo de E2 es T, entonces E1.E2 es un valor l; la expresion designa el miembro nombrado de la clase.

¿Podría "designar" significa que este miembro está dentro de su ciclo de vida y que no puedo usar el acceso de miembro de la clase para realizar alias? ¿O está permitido por [basic.lval] /11.6

Respuestas a la pregunta(2)

Su respuesta a la pregunta