swap2.cpp 581 Bytes
#include <iostream>
#include <string>
using namespace std;
template <class T> void swap_value(T& var1, T& var2)
{
    T temp;
    temp = var1;
    var1 = var2;
    var2 = temp;
}

class Value {
  private:
    int x;

  public:
    Value(int i = 0) : x(i) {}
    friend ostream& operator<<(ostream& out, Value v);
};

ostream& operator<<(ostream& out, Value v)
{
    out << "value(" << v.x << ")";
    return out;
}

int main()
{
    Value v1(5), v2(10);
    cout << "original " << v1 << " " << v2 << endl;
    swap_value(v1, v2);
    cout << "after " << v1 << " " << v2 << endl;
}