Wilhelm M. schrieb:
Der normative Text ist:
"A postfix expression followed by the . operator and an identifier
designates a member of a structure or union object. The value is that of
the named member,107) and is an lvalue if the first expression is
an lvalue. If the first expression has qualified type, the result has
the so-qualified version of the type of the designated member."
Dort sehe ich nirgends eine explizite Erlaubnis, ein anderes Element als das zuletzt geschriebene zu lesen.
Die nicht-normative Fußnote erläutert den nicht-normativen Begriff
"type-punning".
Die Fußnote beschreibt es komplett und gibt in Klammern an, dass man das "type punning" nennt.
Das ist für mich kein Zeichen dafür, dass unions wie du sagst explizit dafür vorgesehen wären, sondern eher, dass es auf Grund häufiger Nutzung eben akzeptiert wird.
Dafür steht im normativen Teil aber das mit der common initial sequence
von zwei Strukturen (wie in C++) als "one special guarantee" drin.
Aber darum geht es doch hier gar nicht.
Warum ist das eine "special guarantee", wenn type punning doch sowieso der angedachte Zweck sein soll?