standard-layout相关内容

什么是聚合和 POD,它们如何/为什么特别?

此常见问题解答是关于聚合和POD的,涵盖以下材料: 什么是聚合? 什么是POD(普通旧数据)? 它们有什么关系? 它们有什么特别之处,为什么特别? C++11 有哪些变化? 解决方案 如何阅读: 这篇文章比较长.如果您想了解聚合和 POD(普通旧数据),请花时间阅读.如果您只对聚合感兴趣,请阅读第一部分.如果您只对 POD 感兴趣,那么您必须首先阅读聚合的定义、含义和示 ..
发布时间:2022-01-30 15:54:50 C/C++开发

什么是聚合和 POD 以及它们如何/为什么特别?

此常见问题解答是关于聚合和 POD 的,涵盖以下材料: 什么是聚合? 什么是POD(普通旧数据)? 它们有什么关系? 它们有何特别之处?为何如此? C++11 有哪些变化? 解决方案 阅读方法: 这篇文章比较长.如果您想了解聚合和 POD(普通旧数据),请花点时间阅读它.如果您只对聚合感兴趣,请仅阅读第一部分.如果您只对 POD 感兴趣,那么您必须首先阅读聚合的定义、含 ..
发布时间:2021-12-01 14:45:12 C/C++开发

带有原始类型的单个数组成员的标准布局结构的有保证的内存布局

考虑以下简单结构: 结构A{浮动数据[16];}; 我的问题是: 假设平台上的 float 是32位IEEE754浮点数(如果很重要),使用C ++标准保证 struct A的预期内存布局 ?如果没有,它能保证什么和/或什么是强制执行保证的方式? 通过期望的内存布局,我的意思是该结构占用内存中的 16 * 4 = 64 个字节,每个连续的 4 个字节均被占用通过 data 数组中 ..
发布时间:2021-04-19 20:54:09 C/C++开发

被称为工会会员的破坏者

C ++ 11允许在联盟中使用标准布局类型: Union成员具有用户定义的构造函数 然后我的问题是:我保证当 union 超出范围了吗? 我的理解是,在切换时,我们必须手动销毁并构造: http://en.cppreference.com/w/cpp/language/union#Explanation 但是这样的例子呢? { union S {string str; ..
发布时间:2020-09-26 22:37:55 C/C++开发

is_standard_layout如何有用?

从我的理解,标准布局允许三件事: 空基类优化 向后兼容C和某些指针转换 使用offsetof 该库是 is_standard_layout 谓词元函数,但我不能看到很多用于它在通用代码中,因为上面列出的C功能似乎非常罕见,需要检查通用代码。我唯一能想到的是在 static_assert 中使用它,但这只是为了使代码更健壮,而不是必需的。 is_standard_layout ..
发布时间:2016-10-23 22:18:13 C/C++开发

我可以在布局兼容的标准布局类型之间合法reinterpret_cast?

我在写一个类,假设枚举类型布局是否与其底层类型兼容?是“yes”,与布局兼容 struct kevent 但使用枚举类用于过滤器, flags 等,它也是标准布局(字段都是私人和所有自己的标准布局,没有虚拟成员,没有基类)。从我的读取 n3690 ,我可以确定我的类和 struct kevent 具有相同的值表示,但我可以看不到标准中的任何东西,因此允许我 reinterpret_cast 之间, ..
发布时间:2016-10-20 21:45:46 C/C++开发

为什么C ++ 11的POD“标准布局”定义的方式是什么?

我在 C中寻找新的,轻松的POD定义++ 11 (第9.7节) 标准布局类是一个类: 没有类型为非标准布局类(或此类类型的数组)或引用的非静态数据成员, 没有虚拟函数(10.3)和没有虚拟基类(10.1), 对所有非静态数据具有相同的访问控制成员 没有非标准布局基类, 在大多数派生类中没有非静态数据成员,最多一个具有非静态数据成员的基类,或者没有具有非静态数据成员的基类, 没 ..
发布时间:2016-10-11 21:38:50 C/C++开发