请参阅此示例:
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};