我有这个功能是AA可变参数模板功能:模板专业化
template<uint C>
double foo(){
double cpt = 1;
for(uint i=0; i<10; i++){
cpt += i*C;
}
return cpt;
}
template<uint C1, uint C2, uint... CCs>
double foo(){
double cpt = 1;
for(uint i=0; i<10; i++){
cpt += i*C1;
}
return cpt + foo<C2, CCs...>();
}
而且它完美的预期,但我认为这是没有做什么,我想正确的方法做。 我试着写类似的东西:
double foo(){
return 0;
}
template<uint C1, uint... CCs>
double foo(){
double cpt = 1;
for(uint i=0; i<10; i++){
cpt += i*C1;
}
return cpt + foo<CCs...>();
}
但我有错误no matching function for call foo() note: couldn't deduce template parameter C1
。 我也试过template <typename T>
在第一个foo
函数的顶部,但我有同样的错误。
有人知道为什么吗? 我使用g ++ 5.4和-std = C++ 11和-O3标志。
'回报CPT + F();'能肯定Viridya? –
gsamaras
@gsamaras typo抱歉 – Viridya
[OT]:你可以摆脱循环,直接做'return(45 * C1 + 1)+ foo();' –
Jarod42