シリアライズするテンプレート クラス (C と呼びます) があり、ブースト シリアライゼーションのバージョンを指定したいと考えています。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 への後続の呼び出しで次のエラーが発生します。
error C2913: explicit specialization; 'boost::serialization::version' is not a specialization of a class template
それを行う正しい方法は何ですか?