gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:09:22 25 4
gpt4 key购买 nike

注意:这是一个后续问题:Is it a missed optimization, when a compile-time known reference takes space in a struct? ,这表明聚合初始化可以将 b 的默认初始化替换为对 a 的引用,方法是使它成为对某个其他变量的引用。这个问题是关于当聚合初始化不可能时会发生什么。

看这个例子:

struct Foo {
int a;
int &b;

Foo() : b(a) { }
};

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

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

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

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

最佳答案

在下面的例子中,y.b 指的是 x.a

int main ()
{
Foo x;
Foo y(x);

return 0;
}

关于c++ - 当编译时已知引用占用非聚合结构中的空间时,是否错过了优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57811424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com