Take ownership of the specified obj and destroy the Datum object previously managed by this object. The behavior is undefined unless obj was allocated using the same allocator used by this object and is not subsequently destroyed externally using Datum::destroy.