I caution that C23 and C++23 may have differing detail for unions for unionvar = {} sorts of notation:
N4950 for C++ reports (note the otherwise case): QUOTE If the aggregate is a nion and the initalizer lst is empty, then -- if any variant member as a deafult member initializer, that member is initialized from itis default member initializer -- otherwise, the first memmber of the union (if any) is copy-initialized from an empty initializer list. END QUOTE If the first member of the C++23 union has fewer bytes than the union does overall, the "otherwise" wording would not involve initializing the bytes that the first member does not include. === Mark Millard marklmi at yahoo.com