#include <iostream>

struct A
{
	A() { std::cout << "constructed\n"; }
	A(A const&) { std::cout << "copyied\n"; }
	~A() { std::cout << "destroyed\n"; }
};

A create_a()
{
	return A();
}

void foo(A* a)
{
	std::cout << "foo!\n";
}

int main()
{
	foo(&create_a());
}