【发布时间】:2014-10-12 11:54:43
【问题描述】:
我正在使用可变参数模板,但遇到以下问题:
template <class T1, class T2>
auto sum(T1 a, T2 b) ->decltype(a + b){
return a + b;
}
template <class T1, class T2, class... T3>
auto sum(T1 a, T2 b, T3... tail) ->decltype(a + b){
return a + sum(b, tail...);
}
函数调用:
cout << sum(1, 2, 3, 4) << endl; // 10 - OK
cout << sum(1.5, 2, 3, 4) << endl; // 10.5 - OK
cout << sum(1, 2, 3.5, 4) << endl; // 10 !! wrong result
我在这里做错了什么?
【问题讨论】:
-
除非我在这里遗漏了什么,否则返回类型是
a + b的类型。这里,a是1,b是2,所以返回类型是int。 -
我尝试写 decltype(a + tail..) 但这不起作用..
-
@Tracer:“我试图写 decltype(a + tail..) 但这不起作用..” - 通过尝试这个,你的问题已经等同于这个:stackoverflow.com/questions/26274207/…
标签: c++ c++11 variadic-functions