@GarrGodfrey Why would the union change its contents if the containing object's destructor is executed? As pointed out here, the union's destructor is actually deleted, so it is not called. Of course,
~Object1()
can overwrite any member's memory (and more) but so can any other (member or not) function, so that is not really relevant to the discussion.