9

シンプルなコードを試してみてください:

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通常の参照ではなく、右辺値参照として明示的に定義します。予想される演算子が呼び出されないのはなぜですか? あるスレッドを別のスレッドに移動するにはどうすればよいですか?

ありがとうございました!

4

2 に答える 2

16

名前付き参照は左辺値です。左辺値は右辺値参照にバインドしません。を使用する必要がありますstd::move

threadFoo = std::move(threadBar);
于 2013-07-16T10:29:52.510 に答える