【发布时间】:2018-10-18 09:56:05
【问题描述】:
在 C++11 草案文档的第 3.9.2 节中:
(文档编号N3242=11-0012,日期:2011-02-28,修订:N3225,名称:工作草案,C++编程语言标准) 有人说:
对于“平凡”的任何对象(基类子对象除外) 可复制”类型 T,无论对象是否拥有有效值 类型 T,可以复制构成对象的底层字节(1.7) 放入一个 char 或 unsigned char 数组中。
我找不到任何关于我可以对具有标准布局类型的对象执行类似操作的信息。
对类型为标准布局类型的对象进行这样的操作是否合法?
实际上我想要做什么,如果
std::is_standard_layout<T>::value 为真,那么我(可能)可以安全地将对象存储在辅助内存中,辅助内存是无符号字符数组。
附言。参考文献
我知道由于 Stackoverlow 的政策,用户可以被阻止,但他们在问题中提供和链接,但这里只是为了让读者感到舒适。如果链接将在 5 年内断开,请使用其他方式查找提及的文档。
[1] C++ 标准委员会的 C++ 标准草案 - ISOCPP: http://www.open-std.org/jtc1/sc22/wg21/docs/standards
[2] C++2011标准草案: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf
【问题讨论】:
-
有“标准布局类”,也有“布局兼容类”。没有“标准布局兼容”之类的东西。
-
感谢指点。我的意思是兼容“std::is_standard_layout
::value”将是真的。我会更新问题en.cppreference.com/w/cpp/types/is_standard_layout -
@ShadowRanger 等人。您将问题标记为重复。它与什么重复?
-
这是关于标准布局行为的精确问题。它不是重复的。更具体地说,在您提供@ShadowRanger 的链接中,关于标准布局的讨论不是用重音明确提出的。
-
@bruziuz:重复的问题和答案,专门解决标准布局及其不足之处。如果它解决了新问题所要求的问题和答案,则副本不必是完全相同的问题。 We closed another duplicate 这个问题就在上周,出于同样的原因。