Невозможно сериализовать две разные версии одного и того же типа в одном и том же двоичном модуле.Причина в том, что используемая версия является константой времени компиляции, заданной с помощью конструкции BOOST_CLASS_VERSION
(номер версии по умолчанию равен нулю, если не указан).
Можно попробовать реализовать специализации функции-члена сериализациидля вашего типа для определенных типов архивов:
// generic overload, used for everything except the MPI archives
template <class Archive>
void serialize(Archive & ar, const unsigned int version)
{
// do 'normal' (file-based) serialization
}
// overload for MPI archive used while deserialization
void serialize(boost::mpi::packed_iarchive& ar, const unsigned int version)
{
// do MPI deserialization
}
// overload for MPI archive used while serialization
void serialize(boost::mpi::packed_oarchive& ar, const unsigned int version)
{
// do MPI serialization
}
Точно так же вы могли бы обеспечить перегрузки при использовании функций сериализации разделенной загрузки / сохранения.