diff -rupN boost_1_43_0/boost/thread/future.hpp boost_vms_1_43_0/boost/thread/future.hpp --- boost_1_43_0/boost/thread/future.hpp 2010-04-01 18:04:15.000000000 +0300 +++ boost_vms_1_43_0/boost/thread/future.hpp 2010-07-11 18:08:50.000000000 +0300 @@ -413,7 +413,7 @@ namespace boost { for(count_type i=0;i(futures[i].future->mutex); + locks[i]=boost::unique_lock(futures[i].future->mutex).move(); } } diff -rupN boost_1_43_0/boost/thread/pthread/thread_data.hpp boost_vms_1_43_0/boost/thread/pthread/thread_data.hpp --- boost_1_43_0/boost/thread/pthread/thread_data.hpp 2009-10-19 11:18:13.000000000 +0200 +++ boost_vms_1_43_0/boost/thread/pthread/thread_data.hpp 2010-07-11 18:25:21.000000000 +0300 @@ -114,6 +114,18 @@ namespace boost { void BOOST_THREAD_DECL yield(); + #ifdef __DECCXX + template + inline void sleep(TimeDuration const& rel_time) + { + this_thread::sleep(get_system_time()+rel_time); + } + + /// Workaround of DECCXX issue of incorrect template substitution + template<> + void BOOST_THREAD_DECL sleep(system_time const& abs_time); + + #else void BOOST_THREAD_DECL sleep(system_time const& abs_time); template @@ -121,6 +133,7 @@ namespace boost { this_thread::sleep(get_system_time()+rel_time); } + #endif } } diff -rupN boost_1_43_0/libs/thread/src/pthread/thread.cpp boost_vms_1_43_0/libs/thread/src/pthread/thread.cpp --- boost_1_43_0/libs/thread/src/pthread/thread.cpp 2010-04-01 18:04:15.000000000 +0300 +++ boost_vms_1_43_0/libs/thread/src/pthread/thread.cpp 2010-07-11 18:26:34.000000000 +0300 @@ -322,7 +322,10 @@ namespace boost namespace this_thread { - + #ifdef __DECXXX + /// Workaround of DECCXX issue of incorrect template substitution + template<> + #endif void sleep(const system_time& st) { detail::thread_data_base* const thread_info=detail::get_current_thread_data();