我在我的应用程序中使用boost::variant
和boost::serialize
。序列化模块内置了对序列化变体的支持,因此:
boost::variant<int,double> u(3.14);
// Do something with u;
// Serialize
oa << u;
作品。但是,我的问题是序列化不健壮。根据我的应用程序的编译方式,变体的元素可能会发生变化。目前,序列化模块似乎只是嵌入了“活动”变体类型的索引;如果变体更改为,例如,这是一个问题boost::variant<double,string>
。
任何人都可以提出改进方法,以便序列化/反序列化工作,以便已序列化的类型是boost::variant
. (因此,在上述情况下boost::variant<int,double> u(3.14)
,可以取消序列化为boost::variant<double,std::string>
. 我知道这可能需要我提供其他信息,例如类型的字符串化形式。