#include <iostream>
using namespace std;
void test1()
{
int x = 5;
int& y = x;
y = 7;
cout << "x (" << &x << ") = " << x << ", ";
cout << "y (" << &y << ") = " << y << endl;
}
void test2() {
// doesn't compile!
/*
int&& x = 5;
int&& y = x;
cout << "x (" << &x << ") = " << x << ", ";
cout << "y (" << &y << ") = " << y << endl;
*/
}
void test3()
{
int&& x = 5;
int&& y = 8;
y = x;
cout << "x (" << &x << ") = " << x << ", ";
cout << "y (" << &y << ") = " << y << endl;
}
void test4()
{
int&& x = 5;
int&& y = std::move(x);
y = 7;
cout << "x (" << &x << ") = " << x << ", ";
cout << "y (" << &y << ") = " << y << endl;
}
int main()
{
test1();
test2();
test3();
test4();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCB0ZXN0MSgpCnsKCWludCB4ID0gNTsKCWludCYgeSA9IHg7Cgl5ID0gNzsKCWNvdXQgPDwgInggKCIgPDwgJnggPDwgIikgPSAiIDw8IHggPDwgIiwgIjsKCWNvdXQgPDwgInkgKCIgPDwgJnkgPDwgIikgPSAiIDw8IHkgPDwgZW5kbDsKfQoKdm9pZCB0ZXN0MigpIHsKCS8vIGRvZXNuJ3QgY29tcGlsZSEKCS8qCglpbnQmJiB4ID0gNTsKCWludCYmIHkgPSB4OwoJY291dCA8PCAieCAoIiA8PCAmeCA8PCAiKSA9ICIgPDwgeCA8PCAiLCAiOwoJY291dCA8PCAieSAoIiA8PCAmeSA8PCAiKSA9ICIgPDwgeSA8PCBlbmRsOwoJKi8KfQoKdm9pZCB0ZXN0MygpCnsKCWludCYmIHggPSA1OwoJaW50JiYgeSA9IDg7Cgl5ID0geDsKCWNvdXQgPDwgInggKCIgPDwgJnggPDwgIikgPSAiIDw8IHggPDwgIiwgIjsKCWNvdXQgPDwgInkgKCIgPDwgJnkgPDwgIikgPSAiIDw8IHkgPDwgZW5kbDsKfQoKdm9pZCB0ZXN0NCgpCnsKCWludCYmIHggPSA1OwoJaW50JiYgeSA9IHN0ZDo6bW92ZSh4KTsKCXkgPSA3OwoJY291dCA8PCAieCAoIiA8PCAmeCA8PCAiKSA9ICIgPDwgeCA8PCAiLCAiOwoJY291dCA8PCAieSAoIiA8PCAmeSA8PCAiKSA9ICIgPDwgeSA8PCBlbmRsOwp9CgppbnQgbWFpbigpCnsKCXRlc3QxKCk7Cgl0ZXN0MigpOwoJdGVzdDMoKTsKCXRlc3Q0KCk7CglyZXR1cm4gMDsKfQ==