Boost序列化:指定模板类版本

时间:2020-03-05 18:58:43  来源:igfitidea点击:

我有一个序列化的模板类(称为C),我想为其指定一个用于Boost序列化的版本。因为BOOST_CLASS_VERSION不适用于模板类。我尝试了这个:

namespace boost {
namespace serialization {
    template< typename T, typename U >
    struct version< C<T,U> >
    {
        typedef mpl::int_<1> type;
        typedef mpl::integral_c_tag tag;
        BOOST_STATIC_CONSTANT(unsigned int, value = version::type::value);
    };
}
}

但它不能编译。在VC8下,对BOOST_CLASS_VERSION的后续调用会出现此错误:

错误C2913:显式专业化; 'boost :: serialization :: version'不是类模板的专门化`

正确的方法是什么?

解决方案

回答

#include <boost/serialization/version.hpp>

:-)