#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());
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEEKewoJQSgpIHsgc3RkOjpjb3V0IDw8ICJjb25zdHJ1Y3RlZFxuIjsgfQoJQShBIGNvbnN0JikgeyBzdGQ6OmNvdXQgPDwgImNvcHlpZWRcbiI7IH0KCX5BKCkgeyBzdGQ6OmNvdXQgPDwgImRlc3Ryb3llZFxuIjsgfQp9OwoKQSBjcmVhdGVfYSgpCnsKCXJldHVybiBBKCk7Cn0KCnZvaWQgZm9vKEEqIGEpCnsKCXN0ZDo6Y291dCA8PCAiZm9vIVxuIjsKfQoKaW50IG1haW4oKQp7Cglmb28oJmNyZWF0ZV9hKCkpOwp9