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