对非标准布局类的布局限制
Layout restriction on a non-standard layout class
编译器是否可以自由地对非标准布局类中的数据进行重新排序?例如,是否允许更改
struct
{
char x;
private:
short y;
public:
char z;
};
至
struct
{
private:
short y;
public:
char x;
char z;
};
EDIT:我最初记错了引号,编译器可以根据9.2/14
:这样做
具有相同访问权限的(非并集)类的非静态数据成员控制权(第11条)的分配是为了让以后的成员拥有更高的控制权类对象中的地址。非静态的分配顺序未指定具有不同访问控制的数据成员(11)。实施一致性要求可能导致两个相邻成员不得紧接在一起分配;所以可能管理虚拟功能的空间要求(10.3)和虚拟基类(10.1)
它不能用相同的访问说明符对属性进行重新排序。
也就是说,我不知道有任何实现可以自由地对属性进行重新排序,即使是跨访问说明符。
相关文章:
- C4204:使用的非标准扩展:非常量聚合初始值设定项
- 在双重继承的情况下如何处理非标准构造函数
- CMake 不编译具有非标准扩展名的文件
- 定义具有非标准签名的自定义映射比较器
- 我想获取点的属性,它报告错误 C3867:"point::output_x":非标准语法;使用"&"创建指向成员的指针
- 非标准语法,使用 & 创建指向成员的指针
- 在Qt中链接具有非标准名称的lib文件
- 非标准语法使用 '&' 创建指向成员 C++ 的指针
- WINAPI EnumWindowsProc:非标准语法;使用 & 创建指向成员的点
- Vulkan-hpp 是reinterpret_casting非标准布局类到另一个类.这合法吗?
- 'cv::Mat::type':非标准语法;使用 '&' 创建指向成员的指针
- registerPointPickingCallback (PCLViewer::callback_Test,(void*)&viewer);返回 C3687 非标准语法;使用"&"创建指向成员的指针
- 错误 C4839:非标准地使用类 'ATL::CW2AEX<520>' 作为可变参数函数的参数
- C++ Visual Studio 2015:非标准语法;使用 '&' 创建指向成员的指针
- 非标准语法;使用 & 创建指向成员的指针
- Visual Studio 2015"非标准语法;使用"&"为成员创建指针"
- 如何将 Boost 库与 CMake 链接(如果 boost 位于非标准位置,则在集群上)?
- 在 C++17 中为非标准布局类"conditionally-supported""偏移"意味着什么?
- 警告:在非标准布局类型'DerivedClass'上偏移
- 对非标准布局类的布局限制