是否有一个类/结构的术语既是平凡的布局又是标准布局,但也没有指针成员?
基本上我想引用"真正的"普通旧数据类型.我可以从内存中获取并存储在磁盘上的数据,并将其读回内存以供以后处理,因为它只不过是一组int,字符,枚举等.
如果类型是"真正的"普通旧数据类型,有没有办法在编译时进行测试?
这可以取决于结构的语义。我可以想象一个结构体的int字段是某些易失性临时数据存储(或缓存)的键。您仍然不应该序列化这些,但是您需要有关该结构的内部知识才能告诉1。
一般来说,C++ 缺乏通用序列化的功能。仅在指针上实现此自动操作只是冰山一角(如果一般情况下可能相当准确)-以通用方式也是不可能的。C++ 仍然没有反射,因此无法检查“每个成员”的某些条件。
现实的方法可能是:
不过,所有这些都有其局限性,加上我之前的保留意见,我不确定它们有多实用。
1这当然是双向的;指针可用于存储相对偏移量,因此可以完美地序列化。