  //  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)
-@@ -44,6 +45,13 @@
+@@ -41,6 +42,13 @@
  #   pragma warning( disable : 4127 ) // "conditional expression is constant"
  #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
@@ -314,15 +322,15 @@
         {
           if (op == clone_functor_tag || op == move_functor_tag) {
             const functor_type* in_functor = 

-            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;
