#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;
}