私は現在、C++ での同時実行性について学んでおり、C++0x で可能になると信じているスレッドのベクトルを使用することに出会いました。ただし、現在のコンパイラにはムーブ対応コンテナーが実装されていないようで、 が削除されているためにエラーが生成std::thread::thread(const std::thread&)
されます。つまり、ムーブ コンストラクター/ムーブ割り当てはstd::thread
.
を使用してカスタムアロケーターを作成することで、この問題を回避できると考えているのは正しいですか
void MyAllocator::construct (pointer p, reference val)
/* should be non-const reference to val because using move constructor? */
{
new ((void*)p) T (std::move(val));
}
それよりも
void allocator::construct (pointer p, const_reference val)
{
new ((void*)p) T (val);
}
? または、このテーマの他のバリエーション (おそらく MyAllocator::construct のオーバーロードを使用)。
注意: これは主に、短期間の教育的な演習であり、コンテナ内のスレッドをいじるのに十分な作業を実行することを目的としています。MyAllocator
このコンテキストでのみ使用します。ただし、これが実装されている可能性のあるライブラリを教えてください。ソースを突き詰めることができます。