// template<typename T> // auto sum(const T& t) { // return t; // } // template<typename First, typename Second, typename ...T> // auto sum(const First& first, const Second& second, const T& ...t) { // return first + sum(second, t...); // } // #include <initializer_list> // template<typename First, typename Second, typename ...T> // auto sum(const First& first, const Second& second, const T& ...t) { // auto result = first; // (void)std::initializer_list<int>{(result += t, 0)...}; // return result; // } template<typename ...T> auto sum(const T& ...t) { return (t + ...); } int main() { auto S = sum(1.0, 2, 3000); return 0; }