In C ++ 1y:
#include <iostream> void test(int){} template<typename T,typename...Args> void test(int& sum,T v,Args... args) { sum+=v; test(sum,args...); } template<typename T,typename...Args> decltype(test<T, Args...>)* sum = &(test<T, Args...>); int main(void) { int res = 0; sum<int, int>(res, 4, 7); std::cout << res << std::endl; }
Alternatively wrap it in another variational function and the std::forward arguments:
template<typename T,typename...Args> void other(int&sum, T v, Args&&... args) { test(sum, std::move(v), std::forward<Args>(args)...); }
source share