At Wed, 11 Aug 2010 11:59:21 -0700, Emil Dotchevski wrote:
On Wed, Aug 11, 2010 at 1:37 AM, Roland Bock
wrote: Hi,
compiling the attached example with gcc-4.4.3 (Ubuntu 10.4, 64bit) with
-Wall -O3
leads to a long warning message (second attachment), culminating in
boost/1.44/include/boost/function/function_base.hpp:321: warning: dereferencing type-punned pointer will break strict-aliasing rules boost/1.44/include/boost/function/function_base.hpp:325: warning: dereferencing type-punned pointer will break strict-aliasing rules
I wonder how I could avoid this without -fno-strict-aliasing or -Wno-strict-aliasing?
The code in question is a reinterpret_cast which casts a char pointer to a user-specified functor type pointer. The interpret cast seems correct, and the warning seems correct too if not very useful in this case.
Really, the reinterpret_cast is portably correct? Pretty much the only thing you can do portably with reinterpret_cast is round-trip cast a pointer type to another pointer type and then cast it back before you use it again. -- Dave Abrahams BoostPro Computing http://www.boostpro.com