boost :: bimap para enum

Estoy tratando de crear una facilidad de búsqueda bidireccional simple para enumeraciones en C ++. Tengo una búsqueda unidireccional trabajando bien ...

enum MyEnum
{ 
    One, 
    Two, 
    Three 
};

const boost::unordered_map<MyEnum,std::string> MyEnumMap = map_list_of
    (One, "One")
    (Two, "Two")
    (Three, "Three");

y luego haciendo una mirada vía

MyEnumMap.at(One)

Eso funciona pero solo permite búsquedas basadas en clave. Me gustaría usar un contenedor de búsqueda bidireccional como boost: bimap para permitir búsquedas inversas sencillas basadas en valor y clave. Aunque no parece que map_list_of sea compatible con boost :: bimap.

En primer lugar, ¿debería seguir usando map_list_of con boost :: bimap, o se requiere otro tipo?
Los mapas serán todos de tipo básico (Enum, cadena).

En segundo lugar, ¿hay alguna manera de que aún pueda definir el mapa como constante de una manera simple como arriba? Estoy tratando de hacer que esto sea tan fácil de actualizar y mantener como sea posible sin entrar en demasiadas definiciones de tipo adicionales y demás. Su percepción es apreciada.

Respuestas a la pregunta(1)

Su respuesta a la pregunta