Serialization Boost序列化:如何在不加载的情况下检索归档中的类版本?

Serialization Boost序列化:如何在不加载的情况下检索归档中的类版本?,serialization,boost,boost-serialization,Serialization,Boost,Boost Serialization,我的问题是关于程序回滚和归档兼容性的管理: 假设我在版本10=>archive.txt中用程序保存了一个T类型的对象。 如果我将程序回滚到以前的版本(比如5),我想检查(不尝试反序列化性能问题)1.30中的T是否与archive.txt中保存的对象具有相同的“BOOST_CLASS_version” 简而言之:有没有办法检索存档中存储的T的BOOST\u CLASS\u版本? 我阅读了boost代码,但没有找到一种“非常直接”的方法来实现这一点。 似乎我必须得到基本的iarchive impl的

我的问题是关于程序回滚和归档兼容性的管理: 假设我在版本10=>archive.txt中用程序保存了一个T类型的对象。 如果我将程序回滚到以前的版本(比如5),我想检查(不尝试反序列化性能问题)1.30中的T是否与archive.txt中保存的对象具有相同的“BOOST_CLASS_version”

简而言之:有没有办法检索存档中存储的T的BOOST\u CLASS\u版本?

我阅读了boost代码,但没有找到一种“非常直接”的方法来实现这一点。 似乎我必须得到基本的iarchive impl的cobject\u id\u向量,但所有这些东西都是私有的。 这是另一种非侵入性的方式吗?(我所说的非侵入性是指:只使用boostpublic工具,或者至少通过简单的继承来获得基类的受保护成员?)


提前谢谢。

好的,也许我的问题发得太快了:在boost邮件列表上,他们回答:没有。 但即使有可能,处理回滚和兼容性也不是一种可持续的方式

事实上,即使我的T类在程序版本上保持不变,也许T的一个成员U会改变:所以我必须检查所有的成员,以及他们的成员。。。版本:arf

最后,我们使用一个程序(“兼容性检查器”)来处理这个问题,该程序使用每个版本的程序编译:其目的是尝试加载一个归档文件,以检查兼容性。有时它相当长,但至少很简单:当我从10回滚到5时,我检查在版本10中创建的存档是否可以加载到“compatibility_checker”V5中,它告诉我是否可以使用这些数据执行回滚