#include <memory>
#include <iostream>
using namespace std;
struct Test{
shared_ptr< Test > ptr;
Test(){ cout<<"Test c-tor"<<endl; }
~Test(){ cout<<"Test d-tor"<<endl; }
};
int main() {
cout<<"BOP"<<endl;
{
auto ptr1 = make_shared<Test>();
ptr1->ptr = ptr1;
}
cout<<"EOP"<<endl;
return 0;
}
I2luY2x1ZGUgPG1lbW9yeT4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFRlc3R7CgoJc2hhcmVkX3B0cjwgVGVzdCA+IHB0cjsKCgkgVGVzdCgpeyBjb3V0PDwiVGVzdCBjLXRvciI8PGVuZGw7IH0KCgl+VGVzdCgpeyBjb3V0PDwiVGVzdCBkLXRvciI8PGVuZGw7IH0KCn07CgppbnQgbWFpbigpIHsKCgljb3V0PDwiQk9QIjw8ZW5kbDsKCgl7CgoJCWF1dG8gIHB0cjEgPSBtYWtlX3NoYXJlZDxUZXN0PigpOwoKCQlwdHIxLT5wdHIgID0gcHRyMTsKCgl9CgoJY291dDw8IkVPUCI8PGVuZGw7CgoJcmV0dXJuIDA7Cgp9