On Thu, Feb 11, 2010 at 7:39 PM, Steven Watanabe <watanabesj@gmail.com> wrote:

The usual aliasing rules apply with only one exception (listed in 9.5):

[Note: one special guarantee is made in order to
simplify the use of unions: If a POD-union contains several POD-structs that share a common initial
sequence (9.2), and if an object of this POD-union type contains one of the POD-structs, it is permitted to
inspect the common initial sequence of any of POD-struct members; see 9.2. ]

Yes I read the paragraph as well. But as far as I understand my use case is legal (assumed uint64_t is POD), which I think it is. Or am I mistaken?

This is what 9.2  Clause 16 states (you have a snippet from 9.5 which just refers to that one):
"If a POD-union contains two or more POD-structs that share a common initial sequence, and if the PODunion
object currently contains one of these POD-structs, it is permitted to inspect the common initial part
of any of them. Two POD-structs share a common initial sequence if corresponding members have layoutcompatible
types (and, for bit-fields, the same widths) for a sequence of one or more initial members."


I understand that that it is allowed to use union for byte conversions of POD types.


Regards,
Ovanes