#include <iostream>
#include <memory>
struct MyClass
{
MyClass()
{
std::cout << __PRETTY_FUNCTION__ << '\n';
}
~MyClass()
{
std::cout << __PRETTY_FUNCTION__ << '\n';
}
};
std::shared_ptr<void> getData()
{
return std::shared_ptr<void>(new MyClass);
}
int main()
{
std::cout << "Creating data...\n";
auto x = getData();
std::cout << "Releasing data...\n";
x.reset();
std::cout << "Done!\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgoKc3RydWN0IE15Q2xhc3MKewogICAgTXlDbGFzcygpCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgJ1xuJzsKICAgIH0KICAgIAogICAgfk15Q2xhc3MoKQogICAgewogICAgICAgIHN0ZDo6Y291dCA8PCBfX1BSRVRUWV9GVU5DVElPTl9fIDw8ICdcbic7CiAgICB9Cn07CgpzdGQ6OnNoYXJlZF9wdHI8dm9pZD4gZ2V0RGF0YSgpCnsKICAgIHJldHVybiBzdGQ6OnNoYXJlZF9wdHI8dm9pZD4obmV3IE15Q2xhc3MpOwp9CgoKaW50IG1haW4oKQp7CiAgICBzdGQ6OmNvdXQgPDwgIkNyZWF0aW5nIGRhdGEuLi5cbiI7CiAgICBhdXRvIHggPSBnZXREYXRhKCk7CiAgICAKICAgIHN0ZDo6Y291dCA8PCAiUmVsZWFzaW5nIGRhdGEuLi5cbiI7CiAgICB4LnJlc2V0KCk7CgogICAgc3RkOjpjb3V0IDw8ICJEb25lIVxuIjsKfQ==