| --- misc/boost_1_39_0/boost/function/function_base.hpp |
| +++ misc/build/boost_1_39_0/boost/function/function_base.hpp |
| @@ -2,6 +2,7 @@ |
| |
| // Copyright Douglas Gregor 2001-2006 |
| // Copyright Emil Dotchevski 2007 |
| +// Copyright Dean Michael Berris 2009 |
| // Use, modification and distribution is subject to the Boost Software License, Version 1.0. |
| // (See accompanying file LICENSE_1_0.txt or copy at |
| // http://www.boost.org/LICENSE_1_0.txt) |
| @@ -41,6 +42,13 @@ |
| # pragma warning( disable : 4127 ) // "conditional expression is constant" |
| #endif |
| |
| +#if defined(__GNUC__) |
| +// Because GCC complains of strict aliasing problems, we make it |
| +// treat the header as a system header, becoming more forgiving with |
| +// treating implementation details that may be potentially harmful. |
| +# pragma GCC system_header |
| +#endif |
| + |
| // Define BOOST_FUNCTION_STD_NS to the namespace that contains type_info. |
| #ifdef BOOST_NO_STD_TYPEINFO |
| // Embedded VC++ does not have type_info in namespace std |
| @@ -303,15 +311,15 @@ |
| { |
| if (op == clone_functor_tag || op == move_functor_tag) { |
| const functor_type* in_functor = |
| - reinterpret_cast<const functor_type*>(&in_buffer.data); |
| + static_cast<const functor_type*>(static_cast<void*>(&in_buffer.data)); |
| new ((void*)&out_buffer.data) functor_type(*in_functor); |
| |
| if (op == move_functor_tag) { |
| - reinterpret_cast<functor_type*>(&in_buffer.data)->~Functor(); |
| + static_cast<functor_type*>(static_cast<void*>(&in_buffer.data))->~Functor(); |
| } |
| } else if (op == destroy_functor_tag) { |
| // Some compilers (Borland, vc6, ...) are unhappy with ~functor_type. |
| - reinterpret_cast<functor_type*>(&out_buffer.data)->~Functor(); |
| + static_cast<functor_type*>(static_cast<void*>(&out_buffer.data))->~Functor(); |
| } else if (op == check_functor_type_tag) { |
| const BOOST_FUNCTION_STD_NS::type_info& check_type |
| = *out_buffer.type.type; |