
The example below works in 1.40 and fails in 1.41 #include <string> #include <sstream> #include <vector> #include <boost/smart_ptr.hpp> #include <boost/serialization/serialization.hpp> #include <boost/serialization/shared_ptr.hpp> #include <boost/serialization/vector.hpp> #include <boost/archive/xml_oarchive.hpp> #include <boost/archive/xml_iarchive.hpp> struct X : boost::enable_shared_from_this<X> { X(){} virtual ~X() {} explicit X(int i) : i(i) {} template<class Archive> void serialize(Archive & ar, const unsigned int version) { ar & boost::serialization::make_nvp("i", i); (void) version; } int i; }; typedef boost::shared_ptr<X> PX; typedef std::vector<PX> VPX; int main() { std::ostringstream oss; VPX vpx; vpx.push_back(PX(new X(2))); vpx.push_back(PX(new X(5))); vpx.push_back(PX(new X(7))); boost::archive::xml_oarchive oa(oss); oa << boost::serialization::make_nvp("v", vpx); vpx.clear(); std::string s = oss.str(); std::istringstream iss(s); boost::archive::xml_iarchive ia(iss); ia >> boost::serialization::make_nvp("v", vpx); PX px = vpx[1].get()->shared_from_this(); return 0; }