
This issue has already been discussed but was never addressed : http://lists.boost.org/boost-users/2008/11/42417.php https://svn.boost.org/trac/boost/ticket/4044 I don't understand why objects loaded as pointer can't be relocated : - These objects are stored in basic_iarchive_impl::object_id_vector as the others, so, technically speaking, we can change their "address" - There is situations where it is mandatory : for example when data, sharing some objects, are serialized / dispatched in separate archives => without relocating service at loading, sharing of object is not possible. For the moment, I workaround the limitation with a hack in the method basic_iarchive_impl::reset_object_address : I remove the "safeguard" which checks that the method is applied on a tracked object and immediately after the concerned object is read : ================================================ for(i = moveable_objects_recent; i < moveable_objects_end; ++i){ if(old_address == object_id_vector[i].address) break; } for(; i < moveable_objects_end; ++i){ ================================================ is replaced by ================================================= for(i = 0; i < object_id_vector.size(); ++i){ ================================================= I think that the limit can be properly removed by handling in "basic_iarchive_impl::load_pointer" the "moveable_objects_..." variables as it is done in "basic_iarchive_impl::load_object" As objects created by the serialization system are marked with "loaded_as_pointer" = true (this data is used by basic_iarchive_impl::delete_created_pointers) I think this data should be set to false by "reset_object_address". Is there other implication ? Alain.