#include <map>
#include <memory>
using namespace std;
typedef int AssetId;
struct Material {
int _id;
Material(int id) : _id(id) {}
int AssetId() const { return _id; }
};
typedef std::map< AssetId, std::shared_ptr<Material> > MaterialsMap;
MaterialsMap m_materials;
int main() {
std::shared_ptr<Material> pMaterial(new Material(42));
m_materials.insert( MaterialsMap::value_type(pMaterial->AssetId(), pMaterial) );
}
I2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPG1lbW9yeT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgaW50IEFzc2V0SWQ7CnN0cnVjdCBNYXRlcmlhbCB7CiAgICBpbnQgX2lkOwogICAgTWF0ZXJpYWwoaW50IGlkKSA6IF9pZChpZCkge30KICAgIGludCBBc3NldElkKCkgY29uc3QgeyByZXR1cm4gX2lkOyB9Cn07CnR5cGVkZWYgc3RkOjptYXA8IEFzc2V0SWQsIHN0ZDo6c2hhcmVkX3B0cjxNYXRlcmlhbD4gPiBNYXRlcmlhbHNNYXA7ICAgIAoKTWF0ZXJpYWxzTWFwICBtX21hdGVyaWFsczsKCmludCBtYWluKCkgewogICAgc3RkOjpzaGFyZWRfcHRyPE1hdGVyaWFsPiBwTWF0ZXJpYWwobmV3IE1hdGVyaWFsKDQyKSk7CiAgICBtX21hdGVyaWFscy5pbnNlcnQoIE1hdGVyaWFsc01hcDo6dmFsdWVfdHlwZShwTWF0ZXJpYWwtPkFzc2V0SWQoKSwgcE1hdGVyaWFsKSApOwp9Cg==