fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <type_traits>
  4. #include <utility>
  5.  
  6. using namespace std;
  7.  
  8. template <typename T> T sum(T && x)
  9. {
  10. return std::forward<T>(x);
  11. }
  12.  
  13. template <typename T, typename ...Args>
  14. typename std::common_type<T, Args...>::type sum(T && x, Args &&... args)
  15. {
  16. return std::forward<T>(x) + sum(std::forward<Args>(args)...);
  17. }
  18.  
  19. int main()
  20. {
  21. auto y = sum(1, 2, 4.5); // OK
  22. cout << y << endl;
  23.  
  24. auto x = sum(std::string("Hello!"), "World"); // OK
  25. cout << x << endl;
  26.  
  27. return 0;
  28. }
Success #stdin #stdout 0s 3028KB
stdin
Standard input is empty
stdout
7.5
Hello!World