delete instead of assert, make SDAI_Enum dtor public - still problems
copy to the object in ptr if it exists, else overwrite ptr contents with object pointer

Tried to delete contents of ptr if non-null, but it frequently points to a static data member - in which case
delete fails noisily.
so, check if null. if not null, use operator=; otherwise, overwrite the pointer