#include <iostream>
#include <boost/ptr_container/ptr_map.hpp>
struct Shape
{
virtual ~Shape() = 0;
};
Shape::~Shape() {}
struct Triangle : Shape
{
};
struct Circle : Shape
{
};
int main()
{
boost::ptr_map<int, Shape> map;
int index = 0; // needed as insert takes key by non-const ref
map.insert(index, new Triangle);
index = 1;
map.insert(index, new Circle);
if (map.find(0) != map.end())
{
std::cout << "found";
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Ym9vc3QvcHRyX2NvbnRhaW5lci9wdHJfbWFwLmhwcD4KCnN0cnVjdCBTaGFwZQp7CiAgdmlydHVhbCB+U2hhcGUoKSA9IDA7Cn07CgpTaGFwZTo6flNoYXBlKCkge30KCnN0cnVjdCBUcmlhbmdsZSA6IFNoYXBlCnsKfTsKCnN0cnVjdCBDaXJjbGUgOiBTaGFwZQp7Cn07CgppbnQgbWFpbigpCnsKICBib29zdDo6cHRyX21hcDxpbnQsIFNoYXBlPiBtYXA7CgogIGludCBpbmRleCA9IDA7IC8vIG5lZWRlZCBhcyBpbnNlcnQgdGFrZXMga2V5IGJ5IG5vbi1jb25zdCByZWYKICBtYXAuaW5zZXJ0KGluZGV4LCBuZXcgVHJpYW5nbGUpOwogIGluZGV4ID0gMTsKICBtYXAuaW5zZXJ0KGluZGV4LCBuZXcgQ2lyY2xlKTsKCiAgaWYgKG1hcC5maW5kKDApICE9IG1hcC5lbmQoKSkKICB7CiAgICBzdGQ6OmNvdXQgPDwgImZvdW5kIjsKICB9Cn0=