当编译时已知引用占用结构中的空间时,是否错过了优化?



请参阅此示例:

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};

最新更新