我目前在RHEL 5.4上安装了gcc 4.1,但我想用unordered_map
。正如我发现的,这只是在C++ 11中引入的标准,因此不可用。一种替代方法是使用__gnu_cxx::hash_map
,但我宁愿使用标准。需要哪个gcc版本才能使用C++ 11中的unordered_map?
在另一个开发主机我happend有RHEL 6.4和gcc 4.4,哪知道unordered_map
,但给出了以下警告:
../include/c++/4.4.7/c++0x_warning.h:31:2: error: #error This file requires compiler and library support for the upcoming ISO C++ standard, C++0x. This support is currently experimental, and must be enabled with the -std=c++0x or -std=gnu++0x compiler options.
从GCC homepage我似乎无法找出哪些gcc版本支持unordered_map
。
澄清我的问题: 由于客户要求,我坚持使用几种操作系统及其版本,因此我不能总是更新到最新的GCC版本并且很高兴。我需要在所有平台上保持我的软件的兼容性。
因此,我在寻找使用unordered_map
所需的最小GCC版本。我是知道的供应-std=c++0x
到GCC修正上述错误的事实,但我不知道的“实验”警告多远意味着我不应该使用unordered_map
。
在this thread一些人强烈建议不要使用这个实验C++ 11实现
...所以我应该怎么办?
你真的*读过*错误吗?特别是关于编译器选项的最后一点。 – Biffen 2015-03-19 12:27:21
是的,我*已经*读取了警告,并且我完全意识到警告会随着上述选项而消失。然而,非常自然的问题是,“实验”的含义是什么,如果我只想从C++ 11中使用'unordered_map',这对我来说是否有任何顾虑。 – user826955 2015-03-19 12:32:12
没有任何借口使用gcc 4。1代表C++ 11。只需获取*最新*版本。 – Walter 2015-03-19 12:34:47