Ошибка: не удалось найти соответствие для std :: multimap

Я пытаюсь скомпилировать приложение C ++ на сервере SUN с помощью компилятора Sun C ++ 5.9 SunOS_sparc Patch 124863-01.При получении

 Error: Could not find a match for std::multimap<std::string, OutputNamespace::FUPInfo, std::less<std::string>, std::allocator<std::pair<const std::string, OutputNamespace::FUPInfo>>>::insert(std::pair<std::string, OutputNamespace::FUPInfo>) needed in operator<<(std::ostream &, InvoiceOutput&).

Это проблема, связанная с компилятором? У вас есть идеи, как ее решить?
заранее спасибо

С уважением

0

Решение

Это недостаток компилятора Sun, который поддерживает обратную совместимость ABI с его исходной стандартной библиотекой (в которой отсутствует очень много функций). Хочет insert pair для внутреннего типа значения карты (с const) добавлен к ключу, а не фактический тип ключа, который вы запросили в объявлении мультикарты. Например, следующие компиляции:

#include <map>
#include <string>

int main()
{
std::multimap<std::string, int> mapperizer;

mapperizer.insert(std::pair<const std::string, int>(std::string("Foo"), 42));
}

Кроме того, оригинальная версия будет успешно скомпилирована с stlport4 (аргумент командной строки -library=stlport4).

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]