        public:
 
  #if defined BOOST_THREAD_USES_DATETIME
-@@ -538,7 +553,6 @@
+@@ -538,7 +554,6 @@
              return timed_join(get_system_time()+rel_time);
          }
  #endif

         {
             thread_info=BOOST_THREAD_RV(x).thread_info;
             BOOST_THREAD_RV(x).thread_info.reset();
@@ -351,7 +362,9 @@

         thread& operator=(BOOST_THREAD_RV_REF(thread) other) BOOST_NOEXCEPT
         {

-                );
+            return detail::thread_data_ptr(
+                    detail::heap_new<
+                        detail::thread_data<d2::thread_function<typename boost::remove_reference<F>::type>, ArgTypes...>
+                    >(this->get_thread_function(boost::forward<F>(f)),
+                      boost::forward<ArgTypes>(args)...));
         }
