
On May 17, 2010, at 2:25 AM, Anthony Williams wrote:
"Belcourt, Kenneth" <kbelco@sandia.gov> writes:
Intel-11.1 on Darwin is a recent compiler that will not compile this code.
[ from libs/thread/test/test_thread_return_local.cpp ]
boost::thread make_thread_return_local(boost::thread::id* the_id) { boost::thread t(do_nothing,the_id); return t; }
The same error message is generated in both debug and release builds on Darwin (though strangely it doesn't appear to be an error with Intel 11.1 on Linux).
../libs/thread/test/test_thread_return_local.cpp(16): error #373: "boost::thread::thread(boost::thread &)" (declared at line 111 of "../ boost/thread/detail/thread.hpp") is inaccessible return t; ^
Any ideas how to work around this failure?
Explicitly move the return value:
return std::move(t);
or even
return std::thread(std::move(t));
Yup, that's what I figured. But this compiler doesn't have std::move(). test_thread_return_local.cpp(17): error: namespace "std" has no member "move" return std::move(t); ^ Any other ideas on how to get these Darwin / Intel tests running Anthony? Would the Boost.Move library currently under review work here? -- Noel