c++ struct reference initialization language-lawyer

c++ - ¿Es una optimización perdida, cuando una referencia conocida en tiempo de compilación ocupa espacio en una estructura?



reference initialization (1)

No, porque puede usar la inicialización agregada de una variable para que haga referencia a otra cosa.

struct Foo { int a; int &b = a; }; int c; Foo f{7, c};

Ver este ejemplo:

struct Foo { int a; int &b = a; };

¿Es una optimización perdida, si sizeof(Foo)!=sizeof(int) ?

Quiero decir, ¿puede el compilador eliminar b de la estructura, ya que siempre se refiere a a ?

¿Hay algo que detenga al compilador para hacer esta transformación?

(Tenga en cuenta que struct Foo ve como es. Sin constructores, etc. Pero puede agregar cualquier cosa alrededor de Foo , lo que muestra que esta optimización violaría el estándar)