fork download
  1. #include <iostream>
  2. #include <list>
  3. #include <type_traits>
  4. #include <vector>
  5.  
  6. template <typename T, std::enable_if_t<std::is_arithmetic<T>::value, int> = 0>
  7. T Sum(T inputNumber)
  8. {
  9. return inputNumber;
  10. }
  11.  
  12. template<class Container, typename = typename Container::value_type>
  13. long double Sum(const Container &inputArray)
  14. {
  15. long double sumResult = 0.0;
  16. for (auto& element : inputArray)
  17. {
  18. sumResult += Sum(element);
  19. }
  20. return sumResult;
  21. }
  22.  
  23. int main(){
  24. const std::vector<long double> testVector1 = {1,1,1};
  25. std::cout << Sum(testVector1) << "\n";
  26.  
  27. const auto testVector2 = {testVector1, testVector1, testVector1};
  28. std::cout << Sum(testVector2) << "\n";
  29.  
  30. std::list<std::remove_cv_t<decltype(testVector2)>> testVector3 = {testVector2, testVector2, testVector2};
  31.  
  32. std::cout << Sum(testVector3) << "\n";
  33. }
Success #stdin #stdout 0s 4520KB
stdin
Standard input is empty
stdout
3
9
27