为什么 C++ 非静态数据成员需要唯一地址?
Why C++ non-static data members require unique addresses?
最近 C++ 为 struct empty {};
.
等空数据类型添加了特性 [[no_unique_address]]
拥有唯一地址对空数据成员有何好处?
为什么标准不让所有空数据成员无地址?
为什么 C++ 非静态数据成员需要唯一地址?
因为(除其他外)C 就是这样做的。如果 C++ 能够与 C 布局兼容,那么 C++ 结构的空 NSDM 必须占用与等效 C 声明相同的 space。
空基 class 优化能够添加到 C++,因为基 classes 不是 C 语言的特性,所以从来没有任何关于与 C 的兼容性的问题。如果你想允许空成员优化,您必须让 C++ 程序员明确他们是否想让优化可用(因此,该类型不直接与 C 类型兼容)。你不能只是spring他们。
最近 C++ 为 struct empty {};
.
[[no_unique_address]]
拥有唯一地址对空数据成员有何好处?
为什么标准不让所有空数据成员无地址?
为什么 C++ 非静态数据成员需要唯一地址?
因为(除其他外)C 就是这样做的。如果 C++ 能够与 C 布局兼容,那么 C++ 结构的空 NSDM 必须占用与等效 C 声明相同的 space。
空基 class 优化能够添加到 C++,因为基 classes 不是 C 语言的特性,所以从来没有任何关于与 C 的兼容性的问题。如果你想允许空成员优化,您必须让 C++ 程序员明确他们是否想让优化可用(因此,该类型不直接与 C 类型兼容)。你不能只是spring他们。