试图让简单的代码工作:
std::thread threadFoo;
std::thread&& threadBar = std::thread(threadFunction);
threadFoo = threadBar; // thread& operator=( thread&& other ); expected to be called
出现错误:
使用已删除的函数“std::thread&std :: thread :: operator =(const std :: thread&)”
我明确将 threadBar
定义为右值引用,而不是普通引用。为什么会调用不该被调用的运算符?如何将一个线程移动到另一个线程?
谢谢!
threadFoo = std::thread(threadFunction);
? - Kolyunyastd::move
获得的是一个临时对象或者未命名的引用。 - R. Martinho Fernandes