#include <iostream>
#include <memory>
class Person
{
public:
Person(const std::string& name):
name(name) { }
~Person() { std::cout << "Destroyed" << std::endl; }
std::string name;
};
typedef struct _container
{
std::unique_ptr<Person> ptr;
}CONTAINER;
void func()
{
CONTAINER* c = static_cast<CONTAINER*>(malloc(sizeof(CONTAINER)));
std::unique_ptr<Person> p(new Person("FooBar"));
c->ptr = std::move(p);
std::cout << c->ptr->name << std::endl;
delete c;
}
int main()
{
func();
getchar();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgoKY2xhc3MgUGVyc29uCnsKICAgcHVibGljOgogICAgICBQZXJzb24oY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOgogICAgICAgICBuYW1lKG5hbWUpIHsgfQoKICAgICAgflBlcnNvbigpIHsgc3RkOjpjb3V0IDw8ICJEZXN0cm95ZWQiIDw8IHN0ZDo6ZW5kbDsgfQoKICAgICAgc3RkOjpzdHJpbmcgbmFtZTsKfTsKCnR5cGVkZWYgc3RydWN0IF9jb250YWluZXIKewogICBzdGQ6OnVuaXF1ZV9wdHI8UGVyc29uPiBwdHI7Cn1DT05UQUlORVI7Cgp2b2lkIGZ1bmMoKQp7CiAgIENPTlRBSU5FUiogYyA9IHN0YXRpY19jYXN0PENPTlRBSU5FUio+KG1hbGxvYyhzaXplb2YoQ09OVEFJTkVSKSkpOwogICBzdGQ6OnVuaXF1ZV9wdHI8UGVyc29uPiBwKG5ldyBQZXJzb24oIkZvb0JhciIpKTsKICAgYy0+cHRyID0gc3RkOjptb3ZlKHApOwogICBzdGQ6OmNvdXQgPDwgYy0+cHRyLT5uYW1lIDw8IHN0ZDo6ZW5kbDsKICAgZGVsZXRlIGM7Cn0KCgppbnQgbWFpbigpCnsKICAgZnVuYygpOwogICBnZXRjaGFyKCk7CgogICByZXR1cm4gMDsKfQ==