是否有一个类/结构的术语既简单又标准布局但也没有指针成员?
基本上我想指的是“真正的”普通旧数据类型。我可以从内存中获取数据并将其存储在磁盘上,然后读回内存以供以后处理,因为它只不过是整数、字符、枚举等的集合。
有没有办法在编译时测试一个类型是否是“真正的”普通旧数据类型?
相关:
What are POD types in C++?
What are Aggregates and PODs and how/why are they special?
最佳答案
这可能取决于结构的语义。我可以想象一个具有 int
字段的结构是一些 volatile 临时数据存储(或缓存)的键。你仍然不应该序列化那些,但你需要关于该结构的内部知识才能告诉 1。
一般来说,C++ 缺乏泛型序列化的特性。仅在指针上自动执行此操作只是冰山一角(如果总体上可能非常准确)-它也是 impossible以一种通用的方式。 C++ 仍然没有反射,因此无法检查“每个成员”的某些条件。
现实的方法可能是:
- 在构建之前预处理类源以扫描指针
- 用一些跟踪类型的宏声明要序列化的所有结构
- 可以对一组已知的字段名称实现常规模板检查
不过,所有这些都有其局限性,再加上我之前的保留意见,我不确定它们的实用性如何。
1 这当然是双向的;指针可用于存储相对偏移量,因此可完美序列化。
关于c++ - "Non-pointer POD"C++ 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48425324/