optional format can serialize anything pointer-like
optional format supports auto_ptr, boost::scoped_ptr, unique_ptr for deserialization