首页 > 解决方案 > 为什么默认情况下大多数对的实现不使用压缩(空基优化)?

问题描述

我检查了libcxxeastlboost,它们的所有对都是微不足道的,没有 ebco。但是它们都实现了自己的compressed_pa ​​ir并在实用程序中使用它,例如unique_ptr(first -> pointer, second -> deleter )。

既然 ebco 很有用,为什么它们的对默认不压缩呢?这种优化有什么取舍吗?

标签: c++optimizationbooststd-pair

解决方案


的实现std::pair不能使用空基优化(EBO),因为它包含的对象是成员子对象first和,second而 EBO 仅适用于基类子对象

请注意, 的实现可以使用 EBO,因为它的子对象通过 暴露,这允许使用基类子对象。std::tuple std::get


推荐阅读