:-)嗨
我有以下代码:我们的目标是返回一个函数,其它函数的总和,大致。并了解可变参数模板。
#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