
I need to update the version certain objects in my structure, but I cannot get the version number incremented. Scenario: I have a class MyClass which have several entries of InternalClass objects (which is the one I want a new version of): class MyClass { ... template<class Archive> void serialize(Archive & ar, const unsigned int version) { ar & BOOST_SERIALIZATION("MyInternals", m_vector_of_internal_class_objects); } std::vector<InternalClass> m_vector_of_internal_class_objects; class InternalClass { template<class Archive> void save(Archive & ar, const unsigned int version) const { ar & BOOST_SERIALIZATION("data", m_data); } template<class Archive> void load(Archive & ar, const unsigned int version) { if (version == 0) { old_data_t tmp; ar & BOOST_SERIALIZATION("data", tmp); m_data = convertToNewData(tmp); } else { BOOST_CHECK(version == 1); ar & BOOST_SERIALIZATION("data", m_data); } } BOOST_SERIALIZATION_SPLIT_MEMBER() new_data_t m_data; } } Then in the body (.cpp) I define: BOOST_CLASS_VERSION(MyClass::InternalClass, boost::serialization::object_class_info) BOOST_CLASS_VERSION(MyClass::InternalClass, 1) But when saving to the XML archive file, I still get version="0" for the InternalClass objects (?) /R