boost :: bimap dla enum

Próbuję utworzyć prostą dwukierunkową funkcję wyszukiwania enums w C ++. Mam jednokierunkowe wyszukiwanie działające dobrze ...

enum MyEnum
{ 
    One, 
    Two, 
    Three 
};

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

a potem przejrzyj

MyEnumMap.at(One)

To działa, ale pozwala tylko na wyszukiwania oparte na kluczu. Chciałbym użyć dwukierunkowego kontenera wyszukiwania, takiego jak boost: bimap, aby umożliwić łatwe wyszukiwanie wstecz w oparciu o wartość, a także klucz. Wygląda na to, że map_list_of nie jest kompatybilny z boost :: bimap.

Po pierwsze, czy nadal powinienem używać map_list_of z boost :: bimap, czy też wymagany jest inny typ?
Wszystkie mapy będą typem podstawowym (Enum, string).

Po drugie, czy istnieje sposób, w jaki mogę zdefiniować mapę jako stałą w prosty sposób, jak wyżej? Próbuję uczynić to tak łatwym do aktualizacji i utrzymania, jak to możliwe, bez wchodzenia w zbyt wiele dodatkowych typedefów i tym podobnych. Twoja wnikliwość jest doceniana.

questionAnswers(1)

yourAnswerToTheQuestion