fork download
  1. #include <iostream>
  2.  
  3. template <typename T>
  4. void my_swap(T &a,T &b)
  5. {
  6. T temp = std::move(a);
  7. a = std::move(b);
  8. b = std::move(temp);
  9.  
  10. /* or:
  11.   using std::swap;
  12.   swap(a, b);
  13.   */
  14. }
  15.  
  16. struct Men
  17. {
  18. std::string name;
  19. int age;
  20. };
  21.  
  22. template <>
  23. void my_swap<Men>(Men &a, Men &b)
  24. {
  25. int temp = a.age;
  26. a.age = b.age;
  27. b.age = temp;
  28.  
  29. /* or:
  30.   std::swap(a.age, b.age);
  31.   */
  32. }
  33.  
  34. std::ostream &operator<<(std::ostream &os, const Men &M)
  35. {
  36. os << M.name << " is " << M.age;
  37. return os;
  38. }
  39.  
  40. int main()
  41. {
  42. int x{100};
  43. int y{200};
  44. my_swap(x, y);
  45. std::cout << x << "," << y << std::endl;
  46.  
  47. Men M1{"Jack", 10};
  48. Men M2{"Tony", 20};
  49. my_swap(M1, M2);
  50. std::cout << M1 << "," << M2 << std::endl;
  51.  
  52. return 0;
  53. }
Success #stdin #stdout 0s 4412KB
stdin
Standard input is empty
stdout
200,100
Jack is 20,Tony is 10