
Looks like the new type-punning warnings from gcc-4.4.1 are false positives (but I'd like someone else to confirm that!). The fixes below illustrate how to suppress them simply by declaring a temporary variable. HTH, John. Index: boost/wave/util/flex_string.hpp =================================================================== --- boost/wave/util/flex_string.hpp (revision 57230) +++ boost/wave/util/flex_string.hpp (working copy) @@ -1211,7 +1211,10 @@ }; Storage& Data() const - { return *reinterpret_cast<Storage*>(buf_); } + { + Storage* p = reinterpret_cast<Storage*>(buf_); + return *p; + } RefCountType GetRefs() const { Index: boost/function/function_base.hpp =================================================================== --- boost/function/function_base.hpp (revision 57230) +++ boost/function/function_base.hpp (working copy) @@ -316,11 +316,13 @@ new ((void*)&out_buffer.data) functor_type(*in_functor); if (op == move_functor_tag) { - reinterpret_cast<functor_type*>(&in_buffer.data)->~Functor(); + functor_type* f = reinterpret_cast<functor_type*>(&in_buffer.data); + f->~Functor(); } } else if (op == destroy_functor_tag) { // Some compilers (Borland, vc6, ...) are unhappy with ~functor_type. - reinterpret_cast<functor_type*>(&out_buffer.data)->~Functor(); + functor_type* f = reinterpret_cast<functor_type*>(&out_buffer.data); + f->~Functor(); } else if (op == check_functor_type_tag) { const BOOST_FUNCTION_STD_NS::type_info& check_type = *out_buffer.type.type;