fork(1) download
  1. #include <type_traits>
  2. #include <utility>
  3. #include <iostream>
  4.  
  5. template<typename T>
  6. T sum(T a) { return a; }
  7.  
  8. template<typename T, typename T1>
  9. typename std::common_type<T, T1>::type sum(T a, T1 b) { return a + b; };
  10.  
  11. template<typename T, typename ...Args>
  12. typename std::common_type<T, Args...>::type sum(T a, Args ...args) {
  13. return sum(a, sum(args...));
  14. };
  15.  
  16. int main() {
  17. std::cout << sum(1, 2, 3) << std::endl;
  18. std::cout << sum(1) << std::endl;
  19. std::cout << sum(2, 5, 6, 8, 8, 9, 2.2f) << std::endl;
  20. }
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
6
1
40.2