Я пытаюсь скомпилировать приложение 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&).
Это проблема, связанная с компилятором? У вас есть идеи, как ее решить?
заранее спасибо
С уважением
Это недостаток компилятора 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
).
Других решений пока нет …