:-)嗨
我有以下代碼:我們的目標是返回一個函數,其它函數的總和,大致。並瞭解可變參數模板。
#include <iostream>
template <typename F>
struct FSum {
FSum(F f) : f_(f) {} ;
int operator()() {
return f_() ;
}
F f_ ;
} ;
template <typename F1, typename F2, typename... Frest>
struct FSum {
FSum(F1 f1, F2 f2, Frest... frest) {
f_ = f1 ;
frest_ = FSum<F2, Frest...>(f2, frest...) ;
}
int operator()() {
return f_() + frest_() ;
}
F1 f_ ;
FSum<F2, Frest...> frest_ ;
} ;
struct F1 {
int operator()() { return 1 ; } ;
} ;
struct F2 {
int operator()() { return 2 ; } ;
} ;
struct F3 {
int operator()() { return 3 ; } ;
} ;
int main() {
F1 f1 ;
F2 f2 ;
F3 f3 ;
FSum<F1, F2, F3> fsum = FSum<F1, F2, F3>(f1, f2, f3) ;
std::cout << fsum() << std::endl ;
}
,但我得到了以下錯誤消息從鐺(G ++也給出了一個錯誤):
test_variadic.cpp:14:1: error: too many template parameters in template redeclaration template ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
而且還有我不明白。我雖然編譯器會根據模板參數的數量選擇類。由於第一個具有一個,另一個具有兩個或更多個。
有什麼想法?
非常感謝:-)
好的,這是有道理的,謝謝:-) – leo