#include <iostream>
#include <new>
#include <memory>
struct MyClass {
MyClass () { std::cout << __func__ << std::endl; }
~MyClass () { std::cout << __func__ << std::endl; }
};
int main ()
{
char mem[sizeof(MyClass)] alignas(MyClass);
auto dtor = [](MyClass *p){ p->~MyClass(); };
std::shared_ptr<MyClass> p(new (mem) MyClass, dtor);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bmV3PgojaW5jbHVkZSA8bWVtb3J5PgogCnN0cnVjdCBNeUNsYXNzIHsKICAgIE15Q2xhc3MgKCkgeyBzdGQ6OmNvdXQgPDwgX19mdW5jX18gPDwgc3RkOjplbmRsOyB9CiAgICB+TXlDbGFzcyAoKSB7IHN0ZDo6Y291dCA8PCBfX2Z1bmNfXyA8PCBzdGQ6OmVuZGw7IH0KfTsKIAppbnQgbWFpbiAoKQp7CiAgICBjaGFyIG1lbVtzaXplb2YoTXlDbGFzcyldIGFsaWduYXMoTXlDbGFzcyk7CiAgICBhdXRvIGR0b3IgPSBbXShNeUNsYXNzICpwKXsgcC0+fk15Q2xhc3MoKTsgfTsKICAgIHN0ZDo6c2hhcmVkX3B0cjxNeUNsYXNzPiBwKG5ldyAobWVtKSBNeUNsYXNzLCBkdG9yKTsKfQ==