【发布时间】:2015-04-14 13:36:40
【问题描述】:
我已经实现了一个template<typename T> Serializer,它适用于T 类型的任何普通可复制 对象,只是序列化sizeof(T) 字节。
然后我针对其他类型的兴趣实现了几个(部分)专业化,例如std::vector<T> 和std::bacis_string<T>。对于其他类型,我触发static_assert(is_trivially_copyable<T>::type, "Unsupported type");。
这不是我想要的,因为我想避免序列化,例如带有裸指针的类型,例如:
struct C_style_vector{
size_t size;
int* ptr;
};
对于这种类型,我假设用户将定义一个临时专业化。相反,就目前而言,我的 Serializer 不适用于这样的类型:
struct Simple_type{
double d;
std::vector<int> v;
};
即使Simple_type 的每个成员都可以被我的班级序列化。
那么,我如何用裸指针捕获类型? 以及如何告诉我的序列化程序序列化仅由可序列化成员组成的类型,逐个成员序列化它?
【问题讨论】:
-
如果您曾经想知道为什么
boost::serialization箭头后面有如此庞大的木头,请不要再想了。
标签: c++ templates serialization template-specialization