Hello Robert
After adding nvp wrappers around all serialize commands, I am able to produce the xml archives (attached inclusive diff).
The archive produced using boost 1.37 contains the additional element '<item_version>0</item_version>. This additional element seems to be inserted by the std::vector serialization code. I compared the load function in vector.hpp from version 1.35 and 1.37 (see code below). The version 1.37 tries to load the variable item_version that is not saved by version 1.35.
Is the condition around the additional code (BOOST_SERIALIZATION_VECTOR_VERSION < ar.get_library_version()) executed wrongly?
David
version 1.35:
template<class Archive, class U, class Allocator>
inline void load(
Archive & ar,
std::vector<U, Allocator> &t,
const unsigned int /* file_version */,
mpl::true_
){
collection_size_type count(t.size());
ar >> BOOST_SERIALIZATION_NVP(count);
t.resize(count);
if (!t.empty())
ar >> make_array(detail::get_data(t),t.size());
}
version 1.37:
template<class Archive, class U, class Allocator>
inline void load(
Archive & ar,
std::vector<U, Allocator> &t,
const unsigned int /* file_version */,
mpl::true_
){
collection_size_type count(t.size());
ar >> BOOST_SERIALIZATION_NVP(count);
t.resize(count);
unsigned int item_version=0;
if(BOOST_SERIALIZATION_VECTOR_VERSION < ar.get_library_version())
ar >> BOOST_SERIALIZATION_NVP(item_version);
if (!t.empty())
ar >> make_array(detail::get_data(t),t.size());
}