#include <iostream>
#include <memory>
#include <map>
struct method {
virtual ~method() { std::cout << "f\n"; };
};
typedef std::unique_ptr<method> MPTR;
std::map<int, MPTR> tbl;
void insert(int id, MPTR m) {
tbl.insert(std::make_pair(id, std::move(m)));
};
void set(int id, MPTR m) {
tbl[id] = std::move(m);
};
int main()
{
insert(1, MPTR(new method)); // or insert(1, std:::make_unique<method>()) in C++14 and later
set(1, MPTR(new method)); // or set(1, std:::make_unique<method>()) in C++14 and later
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgojaW5jbHVkZSA8bWFwPgoKc3RydWN0IG1ldGhvZCB7Cgl2aXJ0dWFsIH5tZXRob2QoKSB7IHN0ZDo6Y291dCA8PCAiZlxuIjsgfTsKfTsKdHlwZWRlZiBzdGQ6OnVuaXF1ZV9wdHI8bWV0aG9kPiBNUFRSOwoKc3RkOjptYXA8aW50LCBNUFRSPiB0Ymw7Cgp2b2lkIGluc2VydChpbnQgaWQsIE1QVFIgbSkgewoJdGJsLmluc2VydChzdGQ6Om1ha2VfcGFpcihpZCwgc3RkOjptb3ZlKG0pKSk7Cn07Cgp2b2lkIHNldChpbnQgaWQsIE1QVFIgbSkgewoJdGJsW2lkXSA9IHN0ZDo6bW92ZShtKTsKfTsKCmludCBtYWluKCkKewoJaW5zZXJ0KDEsIE1QVFIobmV3IG1ldGhvZCkpOyAvLyBvciBpbnNlcnQoMSwgc3RkOjo6bWFrZV91bmlxdWU8bWV0aG9kPigpKSBpbiBDKysxNCBhbmQgbGF0ZXIKCXNldCgxLCBNUFRSKG5ldyBtZXRob2QpKTsgLy8gb3Igc2V0KDEsIHN0ZDo6Om1ha2VfdW5pcXVlPG1ldGhvZD4oKSkgaW4gQysrMTQgYW5kIGxhdGVyCglyZXR1cm4gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCn0=