You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
CWG1953 [intro.memory] Unsequenced accesses within the same storage are not undefined behavior when different scalar objects are used (unsequenced union access) #621
union U { int x, y; } u;
(u.x = 1, 0) + (u.y = 2, 0);
The latter statement makes two unsequenced modifications which target the same storage within u but are not the same memory location by definition. Therefore, the statement is well-defined, but it should not be.
A memory location is a set of elements which occupy overlapping storage, where each element is
either an object of scalar type that is not a bit-field or a maximal sequence of adjacent bit-fields all having nonzero width.