Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2005-06-09 10:46:23


Robert Ramey wrote:
> In the course if making a new shared_ptr seriailzation
> implementation, I've come upon a question.
>
> If a shared pointer has been created with a custome deleter, how is
> one to determine what kind of deleter is attached without opening the
> implementation of shared_ptr? That is, I see no way to correctly
> serialize/deserialize a shared_ptr with a custom deleter from the
> published interface of shared_ptr. Can anyone explain how to do this?

A shared_ptr is (almost) opaque with respect to the deleter currently used.
When a shared_ptr with a deleter is serialized, the external representation
does not contain information about the deleter. Consequently, when this
pointer is deserialized, the object is created with new.

This mirrors raw pointer deserialization (which also does not support
"custom deleters" AFAICS), except that the newly deserialized shared_ptr
will destroy correctly.

I haven't found this limitation to be an issue in practice.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk