fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <map>
  4.  
  5. namespace extract
  6. {
  7. template <typename T1, typename T2>
  8. const T2& e(const std::pair<T1, T2>& r)
  9. {
  10. return r.second;
  11. }
  12.  
  13. template <typename T>
  14. const T& e(const T& r)
  15. {
  16. return r;
  17. }
  18.  
  19. template <typename IT>
  20. auto e_it(IT&& it) -> decltype (e(*it))
  21. {
  22. return e(*it);
  23. }
  24.  
  25. }
  26.  
  27. template<typename Iterator>
  28. void print(Iterator begin, Iterator end)
  29. {
  30. while (begin != end)
  31. {
  32. std::cout << extract::e_it(begin) << std::endl;
  33. ++begin;
  34. }
  35. }
  36.  
  37. int main()
  38. {
  39. std::vector<int> v(3, 1);
  40. std::map<int, int> m = {{0, 10}, {1, 11}, {2, 12}};
  41.  
  42. print(v.begin(), v.end());
  43. print(m.begin(), m.end());
  44.  
  45. return 0;
  46. }
  47.  
Success #stdin #stdout 0s 3476KB
stdin
Standard input is empty
stdout
1
1
1
10
11
12