strict aliasing violation

Andreas Schwab schwab@linux-m68k.org
Mon Jan 25 13:19:00 GMT 2010


Piotr Wyderski <piotr.wyderski@gmail.com> writes:

> However, GCC warns me about strict aliasing
> rules violation, which is technically correct, but
> in this case is intended. How do I perform this
> conversion ina GCC-friendly way? Even that
> produces a warning:
>
>     inline hash_type hash(float v) {
>
>         return hash(*reinterpret_cast<const
> std::uint32_t*>(reinterpret_cast<const char*>(&v)));
>     }
>
> but I expected char* to be allowed to alias anything.

Only when used as the type to access the object, but you access it as
uint32_t.  The intermediate cast is irrelevant for aliasing
consideration.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."



More information about the Gcc mailing list