Boost logo

Boost :

Subject: Re: [boost] [Thread] Non-copyable boost::thread
From: Belcourt, Kenneth (kbelco_at_[hidden])
Date: 2010-05-17 11:41:12


On May 17, 2010, at 2:25 AM, Anthony Williams wrote:

> "Belcourt, Kenneth" <kbelco_at_[hidden]> 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


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk