[1.41][serialization] deserialization of weak_ptr fails

The example below works in 1.40 and fails in 1.41
#include <string>
#include <sstream>
#include <vector>
#include

#include <string>
#include <sstream>
#include

Normally, one would expect so serialize a base class using the base object as below: However, serialization for enable_shared_from_this has not been written, so this won't work until that happens. A few minutes spent looking into this reveals that implementing serialization for this class is not a trivial task. So, for now, this cannot be done. Robert Ramey Alexander Gutenev wrote:
The example below works in 1.40 and fails in 1.41
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_BASE_OBJECT_NVP( boost::enable_shared_from_this<X> ); ar & boost::serialization::make_nvp("i", i); }
int i; };

Are you sure this need special handling?
I think the purpose of enable_shared_from_this is to make weak reference to
self and maintain it automatically. You don't do anything special when
constructing a shared_ptr with enable_shared_from_this-derived or when
calling make_shared with it. And before 1.41 everything worked just fine!
"Robert Ramey"
Normally, one would expect so serialize a base class using the base object as below:
However, serialization for enable_shared_from_this has not been written, so this won't work until that happens. A few minutes spent looking into this reveals that implementing serialization for this class is not a trivial task. So, for now, this cannot be done.
Robert Ramey
participants (2)
-
Alexander Gutenev
-
Robert Ramey