当编译时已知引用在结构中采用 space 时,是否错过了优化?

Is it a missed optimization, when a compile-time known reference takes space in a struct?

看这个例子:

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

如果sizeof(Foo)!=sizeof(int),是否错过了优化?

我的意思是,编译器能否从结构中删除 b,因为它始终引用 a

有什么可以阻止编译器进行这种转换吗?

(注意,struct Foo看起来就是这样,没有构造函数等。但是你可以在Foo周围添加任何东西,这表明这种优化会违反标准)

不,因为您可以使用变量的聚合初始化来使其引用其他内容。

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

int c;
Foo f{7, c};