错误:无法找到std :: multimap的匹配项

时间:2013-06-17 18:20:28

标签: c++ cc

我正在尝试使用编译器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&).

这是编译器相关的问题吗?你知道如何解决它吗? 提前致谢

此致

1 个答案:

答案 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)成功编译。