#include <iostream>
using namespace std;
class Foo
{
public:
Foo()
{
cout << "Constructed!" << endl;
}
Foo(const Foo&)
{
cout << "Copied!" << endl;
}
Foo(Foo&&)
{
cout << "Moved!" << endl;
}
int data = 3;
};
Foo returns_a_foo(Foo foo)
{
cout << "infun" << endl;
foo.data = 5;
return foo;
}
int main() {
Foo foo = returns_a_foo(Foo());
cout << "Foo's data is " << foo.data << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgRm9vCnsKcHVibGljOgoJRm9vKCkKCXsKCQljb3V0IDw8ICJDb25zdHJ1Y3RlZCEiIDw8IGVuZGw7Cgl9CgkKCUZvbyhjb25zdCBGb28mKQoJewoJCWNvdXQgPDwgIkNvcGllZCEiIDw8IGVuZGw7Cgl9CgkKCUZvbyhGb28mJikKCXsKCQljb3V0IDw8ICJNb3ZlZCEiIDw8IGVuZGw7Cgl9CgkKCWludCBkYXRhID0gMzsKfTsKCkZvbyByZXR1cm5zX2FfZm9vKEZvbyBmb28pCnsKCWNvdXQgPDwgImluZnVuIiA8PCBlbmRsOwoJZm9vLmRhdGEgPSA1OwoJcmV0dXJuIGZvbzsKfQoKaW50IG1haW4oKSB7CglGb28gZm9vID0gcmV0dXJuc19hX2ZvbyhGb28oKSk7Cgljb3V0IDw8ICJGb28ncyBkYXRhIGlzICIgPDwgZm9vLmRhdGEgPDwgZW5kbDsKCXJldHVybiAwOwp9