在IBMi7.4上尝试使用LANGLVL(*EXTENDED0X)编译C++代码时发生_VACPP_HASH_FUNCT



我正试图在pub400.com:上使用LANGLVL(*EXTENDED0X(编译带有无序映射的简单C++程序

#include <stdlib.h>
#include <stdio.h>
#include <unordered_map>
#include <string>
int main(int argc, char* argv[])
{
printf("Hello world!n");
std::tr1::unordered_map<long long, std::string> test;
test[123] = std::string("123");

return 0;
}    

但它失败了,消息是:

"QSYSINC/STD(xhashtbl)", line 530.50: CZP0274(30) The name lookup for  "_VACPP_HASH_FUNCTION_CHECK" did not find a declaration.              
"QSYSINC/STD(xhashtbl)", line 530.50: CZP1226(0) Declarations for      non-dependent names are resolved in the template definition.          
"QSYSINC/STD(xhashtbl)", line 530.50: CZP1227(0)                       "_VACPP_HASH_FUNCTION_CHECK" does not depend on a template argument.  The compilation failed.

2016年,在谷歌上搜索了IBM AIX C++编译器的相同问题(这是一个编译器错误(。DSPJOB OUTPUT(*PRINT(显示pub400.com运行最新的IBM i 7.4。

是编译器错误还是我遗漏了什么?我办公室的IBM I 7.3 TR9也有同样的问题。有什么想法吗?

谢谢。

这是他们的/QIBM/include/std/xhashtbl中的一个内部错误,你实际上可以自己修复它,你只需要通过关于_VACPP_HASH_function_check的ifdef检查来排除整个_HashFunctionCheck函数。他们很早以前就在zOS(或AIX?(上修复了它,但忘记了将其移植到IBMi.

相关内容

  • 没有找到相关文章

最新更新