#include <memory>
#include <iostream>
struct Foo
{
Foo() { std::cout << "Constructing Foo" << std::endl; }
~Foo() { std::cout << "Destructing Foo" << std::endl; }
void hello() { std::cout << "Hello" << std::endl; }
};
int main()
{
Foo* fooPtr = new Foo();
Foo& fooRef = *fooPtr;
delete fooPtr;
fooRef.hello();
return 0;
}
I2luY2x1ZGUgPG1lbW9yeT4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEZvbwp7CiAgICBGb28oKSB7IHN0ZDo6Y291dCA8PCAiQ29uc3RydWN0aW5nIEZvbyIgPDwgc3RkOjplbmRsOyB9CiAgICB+Rm9vKCkgeyBzdGQ6OmNvdXQgPDwgIkRlc3RydWN0aW5nIEZvbyIgPDwgc3RkOjplbmRsOyB9CiAgICAKICAgIHZvaWQgaGVsbG8oKSB7IHN0ZDo6Y291dCA8PCAiSGVsbG8iIDw8IHN0ZDo6ZW5kbDsgfQp9OwoKCmludCBtYWluKCkKewogICAgRm9vKiBmb29QdHIgPSBuZXcgRm9vKCk7CiAgICAKICAgIEZvbyYgZm9vUmVmID0gKmZvb1B0cjsKICAgIAogICAgZGVsZXRlIGZvb1B0cjsKICAgIAogICAgZm9vUmVmLmhlbGxvKCk7CiAgICAKICAgIHJldHVybiAwOwp9