私が得るエラーは、fill_n
以下の行が削除されたコピーコンストラクターを使用しようとしていることを示しています:なぜそれは移動コンストラクターを使用しようとしないのですか?私はそれを包んでみましたstd::move
が、それは役に立ちませんでした。
std::vector< std::thread > workers;
workers.reserve( 10 );
std::fill_n( std::back_inserter( workers ), 10, std::thread( []{ std::cout << "thread\n"; } ) );
ただし、fill_n
行をに変更すると
for( int i = 0; i < 10; ++i )
{
workers.push_back( std::thread( []{ std::cout << "thread\n"; } ) );
}
それはうまくいきます。これらは、以前に似たようなコードで変更を加えたのと本質的に同じだと思いました。