Я хочу расширить библиотеку последовательной сортировки таким образом, чтобы коллекции STL сохранялись в XML-архивах в другом формате, чем тот, который предоставляется библиотекой Boost Serialization.Изменение сериализации контейнеров STL при использовании Boost.Serialization
Если я правильно все STL контейнеры проходят следующую функцию в процессе сериализации:
// <boost/serialization/collections_save_imp.hpp>
namespace boost{ namespace serialization { namespace stl {
template<class Archive, class Container>
inline void save_collection(Archive & ar, const Container &s)
{
/* ... */
}
} } }
Так что я попытался перегружать эту функцию для xml_oarchive
. Вот небольшой пример моего подхода:
#include <iostream>
#include <vector>
#include <boost/archive/xml_oarchive.hpp>
#include <boost/serialization/vector.hpp>
namespace boost { namespace serialization { namespace stl {
template< typename Container >
inline void save_collection(boost::archive::xml_oarchive& ar, Container const& s)
{
/* My serialization */
}
} } }
int main()
{
{
boost::archive::xml_oarchive ar(std::cout);
std::vector<int> x;
x.push_back(-1);
x.push_back( 1);
x.push_back(42);
x.push_back( 0);
ar << BOOST_SERIALIZATION_NVP(x);
}
return 0;
}
Он компилируется и запускается. Но он не вызывает мою функцию, но тот, который предоставляется Boost. Что мне нужно сделать/изменить, чтобы моя сериализация контейнеров STL работала?
Код внутри Boost, включает в себя не видит ваш перегруженной функции. –