#include #include #include #include #include #include #include class A { public: A() : a(2) {} int a; template void serialize(Archive& ar, const unsigned int version) { ar & a; } }; class B { public: std::vector v; template void serialize(Archive& ar, const unsigned int version) { ar & v; } }; int main() { // Create a B that contains a vector of 3 A's. B b1; b1.v.resize(3); b1.v[0].a = 5; b1.v[1].a = 6; b1.v[2].a = 7; // Write it out. { std::ofstream ofs("data"); boost::archive::text_oarchive oa(ofs); oa << b1; } // Load it back into a B that already contains 2 elements. B b2; b2.v.resize(2); b2.v[0].a = 20; b2.v[1].a = 21; { std::ifstream ifs("data"); boost::archive::text_iarchive ia(ifs); ia >> b2; } BOOST_FOREACH(const A& a, b2.v) { std::cout << a.a << std::endl; } }