#include <iostream>
#include <memory>
#include <unordered_map>
class Test
{
public:
Test(){}
~Test(){}
int test;
};
typedef std::shared_ptr<Test> Test_ptr;
typedef std::unordered_map<std::string, Test_ptr> TestMap;
int main()
{
TestMap map1, map2;
std::string key("abc");
Test_ptr ptr(new Test);
map1.insert(TestMap::value_type(key, ptr));
TestMap::iterator iter = map1.find(key);
if (iter != map1.end())
{
map2.insert(*iter);
if (iter->second == nullptr)
{
std::cout << "after insert the shared ptr becomes null" << std::endl;
}
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KCmNsYXNzIFRlc3QKewogICAgcHVibGljOgogICAgICAgIFRlc3QoKXt9CiAgICAgICAgflRlc3QoKXt9CgogICAgICAgIGludCB0ZXN0Owp9OwoKdHlwZWRlZiBzdGQ6OnNoYXJlZF9wdHI8VGVzdD4gVGVzdF9wdHI7CnR5cGVkZWYgc3RkOjp1bm9yZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBUZXN0X3B0cj4gVGVzdE1hcDsKCmludCBtYWluKCkKewogICAgVGVzdE1hcCBtYXAxLCBtYXAyOwogICAgc3RkOjpzdHJpbmcga2V5KCJhYmMiKTsKICAgIFRlc3RfcHRyIHB0cihuZXcgVGVzdCk7CiAgICBtYXAxLmluc2VydChUZXN0TWFwOjp2YWx1ZV90eXBlKGtleSwgcHRyKSk7CgogICAgVGVzdE1hcDo6aXRlcmF0b3IgaXRlciA9IG1hcDEuZmluZChrZXkpOwogICAgaWYgKGl0ZXIgIT0gbWFwMS5lbmQoKSkKICAgIHsKICAgICAgICBtYXAyLmluc2VydCgqaXRlcik7CiAgICAgICAgaWYgKGl0ZXItPnNlY29uZCA9PSBudWxscHRyKQogICAgICAgIHsKICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJhZnRlciBpbnNlcnQgdGhlIHNoYXJlZCBwdHIgYmVjb21lcyBudWxsIiAgPDwgc3RkOjplbmRsOwogICAgICAgIH0KICAgIH0KfQ==