我正试图在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.