fork(2) download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. template<class T>
  6. void func(const T& a, const T& b) {
  7. for(auto x : a) {
  8. cout << x << " ";
  9. }
  10. cout << endl;
  11. for(auto x : b) {
  12. cout << x << " ";
  13. }
  14. }
  15.  
  16. template<typename Iterator>
  17. struct range { Iterator begin_, end_; };
  18.  
  19. template<typename T>
  20. T begin(const range<T>& ar) { return ar.begin_; }
  21.  
  22. template<typename T>
  23. T end(const range<T>& ar) { return ar.end_; }
  24.  
  25. template<typename T, size_t N>
  26. range<T*> make_array_range(T (&array)[N])
  27. {
  28. using std::begin; using std::end;
  29. return { begin(array), end(array) };
  30. }
  31.  
  32. template<class T, size_t M, size_t N>
  33. void func(const T (&a)[M], const T (&b)[N]) {
  34. func(make_array_range(a), make_array_range(b));
  35. }
  36.  
  37. int main() {
  38. int a1[] = {1, 2};
  39. int a2[] = {3, 4, 5};
  40. func(a1, a2);
  41. return 0;
  42. }
Success #stdin #stdout 0s 3460KB
stdin
Standard input is empty
stdout
1 2 
3 4 5