boost :: bimap para enum

Eu estou tentando criar um recurso de pesquisa bidirecional simples para enums em C ++. Eu tenho uma consulta de mão única funcionando bem ...

enum MyEnum
{ 
    One, 
    Two, 
    Three 
};

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

e, em seguida, fazendo uma olhada via

MyEnumMap.at(One)

Isso funciona, mas só permite pesquisas com base na chave. Gostaria de usar um contêiner de pesquisa bidirecional como boost: bimap para permitir pesquisas reversas fáceis com base no valor e na chave. Não parece que map_list_of seja compatível com boost :: bimap.

Em primeiro lugar, devo ainda estar usando map_list_of com boost :: bimap, ou é outro tipo necessário?
Os mapas serão todos do tipo básico (Enum, string).

Em segundo lugar, existe uma maneira que eu ainda possa definir o mapa como const de uma maneira simples como acima? Eu estou tentando fazer isso tão fácil de atualizar e manter quanto possível sem entrar em muitos typedefs adicionais e tal. Sua percepção é apreciada.

questionAnswers(1)

yourAnswerToTheQuestion