Boost logo

Boost :

Subject: Re: [boost] [serialization] using boost::serialization::collection_size_type and backwards compatibility
From: Brian Ravnsgaard Riis (brian_at_[hidden])
Date: 2009-09-03 05:22:30

Hash: SHA1

joaquin_at_[hidden] wrote:
> Matthias Troyer escribió:
>> On Sep 2, 2009, at 8:15 AM, joaquin_at_[hidden] wrote:
>>> An observant colleague has noticed that Boost.MultiIndex serialization
>>> uses std::size_type instead of the adviced
>>> boost::serialization::collection_size_type:
>>> My question is: if I just change std::size_type with
>>> boost::serialization::collection_size_type in Boost.MultiIndex
>>> serialization code,
>>> will backwards compatibility be preserved, i.e. will users be able
>>> to load
>>> archives saved with the old std::size_type variant? If not, what's
>>> the suggested
>>> way to handle this issue?
>> The suggested way is to bump the version number of your class and
>> check the archive version when deserializing
> In my particular case I'd have to bump the version number for a class
> *template*.
> Is there a documented way to do so, given that BOOST_CLASS_VERSION does
> work only for class instances?

namespace boost
    namespace serialization
        template <typename T>
        struct version<YourTemplate<T> >
            typedef boost::mpl::integral_c_tag tag;
            typedef boost::mpl::int_<'your version integer here'> type;
            BOOST_STATIC_CONSTANT(unsigned int, value = type::value);

Works for me. Tedious, I agree, but...

 /Brian Riis
Version: GnuPG v2.0.12 (MingW32)
Comment: Using GnuPG with Mozilla -


Boost list run by bdawes at, gregod at, cpdaniel at, john at