- #include <iostream> 
- #include <cstdlib> 
- #include <memory> 
-   
- class MyInt 
- { 
- private: 
-    int val; 
-   
- public: 
-    MyInt() : val(0)          { std::cout << "default c'tor called" << std::endl; } 
-    MyInt(int rhs) : val(rhs) { std::cout << "c'tor (" << rhs << ") called" << std::endl; } 
-    ~MyInt()                  { std::cout << "d'tor called" << std::endl; } 
-    int getval (void)         { return val; } 
- }; 
-   
- int main() 
- { 
-    std::shared_ptr<MyInt> pt = std::make_shared<MyInt>(3); 
-   
-    MyInt* pt2 = pt.get(); 
-   
-    std::cout << "reference count " << pt.use_count() << std::endl; 
-   
-    pt = 0; 
-   
-    std::cout << pt2->getval() << std::endl; 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPG1lbW9yeT4KCmNsYXNzIE15SW50CnsKcHJpdmF0ZToKICAgaW50IHZhbDsKCnB1YmxpYzoKICAgTXlJbnQoKSA6IHZhbCgwKSAgICAgICAgICB7IHN0ZDo6Y291dCA8PCAiZGVmYXVsdCBjJ3RvciBjYWxsZWQiIDw8IHN0ZDo6ZW5kbDsgfQogICBNeUludChpbnQgcmhzKSA6IHZhbChyaHMpIHsgc3RkOjpjb3V0IDw8ICJjJ3RvciAoIiA8PCByaHMgPDwgIikgY2FsbGVkIiA8PCBzdGQ6OmVuZGw7IH0KICAgfk15SW50KCkgICAgICAgICAgICAgICAgICB7IHN0ZDo6Y291dCA8PCAiZCd0b3IgY2FsbGVkIiA8PCBzdGQ6OmVuZGw7IH0KICAgaW50IGdldHZhbCAodm9pZCkgICAgICAgICB7IHJldHVybiB2YWw7IH0KfTsKCmludCBtYWluKCkKewogICBzdGQ6OnNoYXJlZF9wdHI8TXlJbnQ+IHB0ID0gc3RkOjptYWtlX3NoYXJlZDxNeUludD4oMyk7CgogICBNeUludCogcHQyID0gcHQuZ2V0KCk7CgogICBzdGQ6OmNvdXQgPDwgInJlZmVyZW5jZSBjb3VudCAiIDw8IHB0LnVzZV9jb3VudCgpIDw8IHN0ZDo6ZW5kbDsKCiAgIHB0ID0gMDsKCiAgIHN0ZDo6Y291dCA8PCBwdDItPmdldHZhbCgpIDw8IHN0ZDo6ZW5kbDsKfQ==