A reference to a reference-counted object
is serializable if the object's class defines the
serialize
()
template function, and either the class has a default constructor,
or a
custom traits class
is used when deserializing with an
implementation of classcreate
() that takes care
of constructing a new object references.
If C
is a class that meets these requirements,
a x::ptr<C>
can be serialized and
deserialized.
If the x::ptr<C>
is an undefined
reference, and serialized, deserialization results in an undefined
reference. Otherwise a new instance of C
,
referenced by the x::ptr<C>
,
gets instantiated, then deserialized.
If x::ptr<C>
is actually a reference to
some subclass of C
, only the
C
superclass gets serialized, and
deserializing puts a reference to the C
object
into the x::ptr<C>
.