c++ - 当编译时已知引用在结构中占用空间时,是否错过了优化?
问题描述
看这个例子:
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};
推荐阅读
- javascript - JS 对象更改为 true,仍视为 false
- javascript - Rails:sign_out current_user 不工作?
- sql - equi join 是否返回重复的列
- amazon-web-services - aws 个性化是否支持搜索引擎?
- c# - asp.net 和 c# 在下拉列表中禁用上个月
- python - 从 Jupyter Notebook 连接到 Db2 的问题
- json - jq - 当键/值在不同文件中时组合多个 if 条件
- c# - 在 wpf C# 中禁用自定义父项时启用子控件
- bash - 在 bash 中使用数组来更改每个循环中创建的文件夹的名称
- perl - 詹金斯用反斜杠跑线