我與可變參數模板玩,我只能堅持以下幾點:可變參數函數 - 確定返回類型
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