#include <memory>
struct B : public std::enable_shared_from_this<B> {
};
struct A : public std::enable_shared_from_this<A> {
A()
: b_()
{}
std::shared_ptr<B> b_;
void SomeFunction();
};
void A::SomeFunction() {
auto a_copy = shared_from_this();
}
int main()
{
A a;
a.SomeFunction();
}
I2luY2x1ZGUgPG1lbW9yeT4KCnN0cnVjdCBCIDogcHVibGljIHN0ZDo6ZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXM8Qj4gewp9OwoKc3RydWN0IEEgOiBwdWJsaWMgc3RkOjplbmFibGVfc2hhcmVkX2Zyb21fdGhpczxBPiB7CiAgICBBKCkKICAgICAgICA6IGJfKCkKICAgIHt9CgogICAgc3RkOjpzaGFyZWRfcHRyPEI+IGJfOwogICAgdm9pZCBTb21lRnVuY3Rpb24oKTsKfTsKCnZvaWQgQTo6U29tZUZ1bmN0aW9uKCkgewogICAgYXV0byBhX2NvcHkgPSBzaGFyZWRfZnJvbV90aGlzKCk7Cn0KCmludCBtYWluKCkKewogICAgQSBhOwogICAgYS5Tb21lRnVuY3Rpb24oKTsKfQo=