fork download
  1. #include <tuple>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <iostream>
  5.  
  6. template <typename Tuple, typename T>
  7. Tuple handle(Tuple t, T v)
  8. {
  9. std::get<0>(t) += v;
  10. std::get<1>(t) *= v;
  11. return t;
  12. }
  13.  
  14. int main()
  15. {
  16. std::vector<int> a = { 1,2,3,4,5,6,7 };
  17.  
  18. for (auto i=1ul << 12; i;)
  19. {
  20. auto accum = std::make_tuple(0,1);
  21. accum = std::accumulate(a.begin(), a.end(), accum, handle<decltype(accum), int>);
  22.  
  23. if (!--i)
  24. std::cout << "sum: " << std::get<0>(accum) << ", product: " << std::get<1>(accum) << std::endl;
  25. }
  26.  
  27. return 0;
  28. }
  29.  
Success #stdin #stdout 0s 2960KB
stdin
Standard input is empty
stdout
sum: 28, product: 5040