我正在尝试使用编译器Sun C ++ 5.9 SunOS_sparc Patch 124863-01在SUN服务器上编译C ++应用程序。我在编译时收到以下错误
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 :(得分:3)
这是Sun编译器中的缺陷,以维持ABI与其原始标准库(缺少很多功能)的兼容性。它希望insert
对是地图的内部值类型(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
)成功编译。