diff -dur thread.original/locks.hpp thread/locks.hpp --- thread.original/locks.hpp Mon Jun 14 04:06:20 2010 +++ thread/locks.hpp Mon Jun 14 04:29:10 2010 @@ -491,6 +491,12 @@ { return static_cast&&>(ul); } + + template + inline upgrade_lock&& move(upgrade_lock& ul) + { + return static_cast&&>(ul); + } #endif template void swap(unique_lock& lhs,unique_lock& rhs) @@ -747,7 +753,7 @@ { try_lock(); } -#ifdef BOOST_HAS_RVALUE_REFS +#ifndef BOOST_NO_RVALUE_REFERENCES upgrade_lock(upgrade_lock&& other): m(other.m),is_locked(other.is_locked) { @@ -775,7 +781,7 @@ upgrade_lock& operator=(unique_lock&& other) { - upgrade_lock temp(other); + upgrade_lock temp(move(other)); swap(temp); return *this; } @@ -927,7 +933,7 @@ } } -#ifdef BOOST_HAS_RVALUE_REFS +#ifndef BOOST_NO_RVALUE_REFERENCES upgrade_to_unique_lock(upgrade_to_unique_lock&& other): source(other.source),exclusive(move(other.exclusive)) {