#include class construct_access { public: template static inline void save_construct(Archive & ar, const T * t, const unsigned int file_version) { t->save_construct(ar, file_version); } template static inline void load_construct(Archive & ar, T * t, const unsigned int file_version) { T::load_construct(ar, t, file_version); } }; #define BOOST_SERIALIZATION_CONSTRUCT(T) \ namespace boost { namespace serialization { \ template \ inline void save_construct_data( \ Archive & ar, const T * t, const unsigned int file_version \ ){ \ construct_access::save_construct(ar, t, file_version); \ } \ template \ inline void load_construct_data( \ Archive & ar, T * t, const unsigned int file_version \ ){ \ construct_access::load_construct(ar, t, file_version); \ } \ }}