のクラスの種類が取得します。 template
で定義されているすべてのタイプを手動で書き込む必要があります。以下のように:私は別の種類を持っている場合は私はこのように、テンプレート機能を持つテンプレート
std::thread t1(reduce<SomeIterator, SomeNumber, SomeFunc>, iterator1, iterator2, 0, sum)
は私が書く必要があります:
std::thread t1(reduce<AnotherIterator, AnotherNumber, Func>, iterator1, iterator2, 0, sum)
どのように私はこのプロセスを自動化することができますか?その後、
template<class RandomAccessIterator, class T, class Func>
std::thread reduce_helper(RandomAccessIterator first, RandomAccessIterator last, const T& initial_value, Func func) {
return std::thread(reduce<RandomAccessIterator, T, Func>, first, last, initial_value, func);
}
としてそれを使用する:あなたはtemplate argument deductionを利用するヘルパー関数テンプレートを作成することができます
std::thread t1(reduce<typeof(X), typeof(Y), typeof(Z)>, iterator1, iterator2, 0, sum)
多分['declytype'](http://en.cppreference.com/w/cpp/language/decltype)? – user463035818
btw "スレッドでは開始できません:" thatsは 'reduce'が関数ではないので、テンプレートです。 – user463035818
テンプレート内にない場合は' std :: thread t1(...) 'を呼び出します'declytype(someObject)'の記述は 'typeOfObject'というだけではありません。一方、それがテンプレートの中にある場合、多分あなたは既に型を知っています – user463035818