#include #include #include #include #include #include using namespace std; class A { public: virtual ~A() {} template void serialize(Archive& ar, unsigned version) { ar & i; } int i; }; class B { public: virtual ~B() {} template void serialize(Archive& ar, unsigned version) { ar & i; } int i; }; BOOST_CLASS_EXPORT(B); int main() { ofstream ofs("xxx"); boost::archive::text_oarchive oa(ofs); B* b = new B; oa << b; ofs.close(); ifstream ifs("xxx"); boost::archive::text_iarchive ia(ifs); ia.template register_type(); B* rb; ia >> rb; assert(rb); std::cout << typeid(*rb).name() << "\n"; return 0; }