Listing 3
#include <functional>
#include <iostream>
using std::cout;
using std::tr1::reference_wrapper;
using std::tr1::ref; using std::tr1::cref;
int main()
{ // demonstrate difference between assigning to
// reference and assigning to reference_wrapper
int i0 = 1;
int j0 = 1;
int i1 = 2;
int j1 = 2;
int& ir0(i0);
int& ir1(i1);
ir0 = ir1;
cout << "assignment to reference, "
<< "i0 is " << i0 << ", "
<< "i1 is " << i1 << '\n';
reference_wrapper<int> jr0 = ref(j0);
reference_wrapper<int> jr1 = ref(j1);
jr0 = jr1;
cout << "assignment to reference_wrapper, "
<< "j0 is " << j0 << ", "
<< "j1 is " << j1 << '\n';
return 0;
}