3
我有模板的功能,因爲這:獲取類型的類模板
template<class RandomAccessIterator, class T, class Func>
T reduce(RandomAccessIterator first, RandomAccessIterator last, const T& initial_value, Func func) {
// Some code;
return cur_value;
}
我不能啓動線程:未創建由於template
行爲
std::thread t1(reduce, iterator1, iterator2, 0, sum)
因爲reduce
功能。 我必須手動編寫在template
中定義的所有類型。像:
std::thread t1(reduce<SomeIterator, SomeNumber, SomeFunc>, iterator1, iterator2, 0, sum)
如果我有另一種類型,我應該寫:
std::thread t1(reduce<AnotherIterator, AnotherNumber, Func>, iterator1, iterator2, 0, sum)
我怎麼能自動完成這一過程?有沒有計算樣類型的類的方法:
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「我無法啓動線程:」因爲'reduce'不是一個函數,它只是一個模板 – user463035818
如果模板不在模板內部,你會在哪裏調用'std :: thread t1(...)' ,編寫'declytype(someObject)'並不比輸入'typeOfObject'短得多。另一方面,如果它在模板內部,那麼你可能已經知道類型 – user463035818