私はかなり単純な機能で作業しています:コンカレントfor
入力要素のリスト、出力ベクトル、および出力を計算する関数入力要素からの要素。'std :: thread'の初期化のための一致するコンストラクタがありません
template<class In, class Out>
void thread_do(net::coderodde::concurrent::queue<In>& input_queue,
Out (*process)(In in),
std::vector<Out>& output_vector)
{
// Pop the queue, process, and save result.
...
}
for (unsigned i = 0; i < thread_count; ++i)
{
thread_vector.push_back(std::thread(thread_do,
input_queue,
process,
output_vector));
}
は私が-std=c++14
を使用します。
は私がコンパイルされません。このスニペットを持っています。
./concurrent.h:129:45: error: no matching constructor for initialization of 'std::thread' thread_vector.push_back(std::thread(thread_do, ^ ~~~~~~~~~~
しかし、私はそれを修正する方法はわかりません。 <In, Out>
追加/ thread_do
に&
を付加しようとしたん、まだを利用するために。
thread_doは、テンプレート関数とクラスメソッドの両方です。 std :: threadのコンストラクタはそれを反映する必要があります。 –
うわー、あまりにも多くのコード。今月までにあなたがデバッグしてきた[MCVE]はどこですか? –
_ "これを修正する方法はわかりません。を追加してthread_doを追加してみましたが、まだ利用できません" _ドキュメントを読んでみることができます。推測する。 –