Я использую boost::bimap
для отображения целых чисел в строки:Как сделать ссылочную переменную для boost :: bimap.left?
typedef boost::bimap<int, std::string> ParamIDStrings;
typedef ParamIDStrings::value_type id_pair;
extern const ParamIDStrings paramIDStrings;
Я пытаюсь создать эталонные переменные, так что я могу написать код:
paramIDStringsByID.at(5);
// Instead of having to remember which side is which:
paramIDStrings.left.at(5);
Но я с трудом интерпретируя Boost documentation, чтобы понять, какой тип bimap::left
есть.
Я пробовал:
// Compiler throws error: invalid use of template-name 'boost::bimaps::bimap' without an argument list
boost::bimaps::bimap::left ¶mIDStringsByID = paramIDStrings.left;
// Compiler throws error: 'paramIDStrings' does not name a type
paramIDStrings::left_map ¶mIDStringsByID = paramIDStrings.left;
// Compiler throws error: invalid initialization of reference of type boost::bimaps::bimap<int, std::__cxx11::basic_string<char> >::left_map
boost::bimaps::bimap<int,std::string>::left_map &cParamIDStringsByID = cParamIDStrings.left;
Вы пробовали 'auto &' и не заботились? – nwp
@nwp Whoa, спасибо. Теперь я знаю, для чего «авто» полезно. Если вы ответите, я приму это. Тем не менее, было бы хорошо знать, каков фактический тип, если только узнать, как черт почитать эти запутанные документы Boost. – DBedrenko
как насчет 'boost :: bimaps :: bimap :: left_map & lmap'? –
Hummingbird