5
попробовав сделать простой кусок кода работы:Перемещение станд :: нить
std::thread threadFoo;
std::thread&& threadBar = std::thread(threadFunction);
threadFoo = threadBar; // thread& operator=(thread&& other); expected to be called
Получение ошибки:
use of deleted function 'std::thread& std::thread::operator=(const std::thread&)'
я явно определить threadBar
как ссылку RValue, а не обычным. Почему не ожидается, что оператор будет вызван? Как переместить один поток в другой?
Спасибо!
Благодарим за ответ. Правильно ли я понимаю, что единственный (и единственный?) Способ, которым ожидаемый оператор мог быть использован, - это временный объект потока, например 'threadFoo = std :: thread (threadFunction);'? – Kolyunya
Либо временная, либо неназванная ссылка, которую вы получаете от 'std :: move'. –
Спасибо за разъяснение! – Kolyunya