gpt4 book ai didi

c++ - 为什么空基类优化 (EBO) 在 MSVC 中不起作用?

转载 作者:IT老高 更新时间:2023-10-28 22:34:21 24 4
gpt4 key购买 nike

为什么空基类优化 (EBO) 没有在 Visual C++ 中得到充分应用?

如果我有很多基类,有什么方法可以帮助编译器进行这种优化?

#include <iostream>

struct T1 { };
struct T2 { };
struct T3 { };
struct T4 { };
struct T5 { };
struct T6 { };

struct Test : T1, T2, T3, T4, T5, T6 { };

int main() { std::cout << sizeof(Test); } // Prints 5

最佳答案

这是 Visual C++ 编译器中长期存在的错误。当一个类派生自多个空基类时,只有初始的空基类会使用空基优化 (EBO) 进行优化。

2006 年在 Microsoft Connect 上报告了此问题:Empty Base Optimization Not Working Properly.目前,旧错误在 Microsoft Connect 上不可见。我被告知这是一个临时问题,虽然我不知道什么时候会解决。同时,以下是来自 Visual C++ 编译器团队的开发人员之一 Jonathan Caves 对该错误的回应:

Hi: unfortunately even though this is a bug in the Visual C++ object model we are unable to fix it at this time given that fixing it would potentially break a lot of existing programs as the sizes of objects would change. Hopefully in the future we may be able to address this issue but not for the next release of the product.

Thanks for reporting the issue.

关于c++ - 为什么空基类优化 (EBO) 在 MSVC 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12701469/

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