```
std::map<InfoTagType, boost::shared_ptr<CThumbLoader> > m_thumbloaders;
```
You're protecting the pointer - the map knows how to self-destruct, but the pointers don't.