В глобальной области видимости могут быть только объявления и определения, и вызов map :: insert () не является одним из них.
Поскольку вы используете >>
в шаблонах, ваш компилятор должен быть достаточно новым для поддержки C ++ 0x.
Попробуйте синтаксис инициализатора C ++ 0x, затем:
typedef std::map<unsigned short, std::pair<char,std::string>> DeviceTypeList;
DeviceTypeList g_DeviceTypeList = {
{(unsigned short)SINGLE_CELL_CAMERA, {'B',"Single Cell Camera"}}
};
тест: https://ideone.com/t4MAZ
Хотя диагностика предполагает, что это MSVS, которая не имеет инициализаторов C ++ 0x по состоянию на 2010 год, поэтому попробуйте вместо этого использовать синтаксис boost инициализатора:
typedef std::map<unsigned short, std::pair<char,std::string> > DeviceTypeList;
DeviceTypeList g_DeviceTypeList =
boost::assign::map_list_of((unsigned short)SINGLE_CELL_CAMERA,
std::make_pair('B',"Single Cell Camera"));
тест: https://ideone.com/KB0vV