boost::shared_lock seems to be broken on gcc 4.3.2 when the c++0x switch is set in the compiler's command line. Without the c++0x support the code compiles fine.
testcase:
#include <boost/thread/shared_mutex.hpp>
#include <boost/thread/locks.hpp>
using namespace boost;
static void foo()
{
upgrade_to_unique_lock<shared_mutex> lock;
}
output:
jobpool.hpp: In function 'void foo()':
jobpool.hpp:43: error: no matching function for call to 'boost::upgrade_to_unique_lock<boost::shared_mutex>::upgrade_to_unique_lock()'
D:\boost\include\boost-1_38/boost/thread/locks.hpp:811: note: candidates are:
boost::upgrade_to_unique_lock<Mutex>::upgrade_to_unique_lock(boost::detail::thread_move_t<boost::upgrade_to_unique_lock<Mutex> >) [with Mutex = boost::shared_mutex]
D:\boost\include\boost-1_38/boost/thread/locks.hpp:800: note: boost::upgrade_to_unique_lock<Mutex>::upgrade_to_unique_lock(boost::upgrade_lock<Mutex>&) [with Mutex = boost::shared_mutex]
D:\boost\include\boost-1_38/boost/thread/locks.hpp:797: note: boost::upgrade_to_unique_lock<Mutex>::upgrade_to_unique_lock(boost::upgrade_to_unique_lock<Mutex>&) [with Mutex = boost::shared_mutex]