I recently had need for a C++ collection which could be accessed with multiple keys. Specifically, I had an object that I wanted to look up either by name or id (in O(1) time). One way to do this is to create two unordered_maps – one keyed by id and another by name, but that is error-prone. I ended up finding a boost class which will do this. It took me a while get it working, so I thought I would share the result.