I have no access to the default constructor of a type I want to serialize (and no knowledge of any other constructors). However, the type is a friend to boost::serialization::access. Rather than duplicating a chunk of the serialization code, I thought I could just reuse the guts of it by serializing the object through a pointer. However, this would require me to construct the pointer during the serialization process, which would mess up the object tracking. Is it possible to turn the tracking off for a specific serialized object, but not the whole type ? E.g. a contrived example: template ... void serialize(Archive &ar, const unsigned) { Type *p = 0; if (Archive::is_saving::value) { p = FuncThatCanGiveMeAPointerToType(); } // Want to turn off object tracking on p here ar & p; // or remove it here if (Archive::is_loading::value) { FuncThatCanAssignTypeByValue(*p); delete p; } } It's like I require a remove_object_address, as opposed to reset_object_address. Or is there an alternative approach?