我与可变参数模板玩,我只能坚持以下几点:可变参数函数 - 确定返回类型
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'。 – NPE 2014-10-12 11:56:33
我试图写decltype(a + tail ..)但是不起作用.. – Tracer 2014-10-12 11:57:39
@Tracer:“我试图写decltype(a + tail ..)但是不起作用..” - 通过尝试这样做,你的问题已经等同于这一个:http://stackoverflow.com/questions/26274207/gcc-can-compile-a-variadic-template-while-clang-cannot – 2014-10-12 12:09:09