缺少std :: map :: emplace() - 过时的库?

时间:2012-01-23 12:33:10

标签: c++ c++11

我正在尝试使用地图的C ++ 11 emplace()函数,但NetBeans说地图没有这样的功能。看看标题,它是“正确的” - 没有提到(在Fedora 16上)的emplace()。哪一切都很好,你知道......但我有点想使用emplace()。

如何启用此功能?我知道它自去年3月以来可能存在,可能更早。彻底的搜索显示,emplace()基本上只存在于我的系统中的列表和向量的标题中。由于近十年来没有对C ++进行过重大修改,如果图书馆“错误”,我没有找到关于该怎么做的文件。

2 个答案:

答案 0 :(得分:2)

如果您的实施不支持某些内容,您有两种选择:

  • 不使用此功能
  • 使用另一种支持您需要的实现。

存在新标准这一事实并未扩大选择范围。事实上,它减少了它,因为你在寻找一个支持每个目标所需的一切的实现时会遇到额外的困难。

请注意,对于纯库事物,其他实现可能是您所做的:兼容性包装器在转换时间中具有增加的外观。但是你必须注意名称冲突效果(当功能出现在标准位置时,兼容性包装器的可见性可能会给代码增加歧义)。

答案 1 :(得分:1)

GCC 4.7不支持这一点,因为当时标准尚未解决。它在4.8及以上版本中实施。你需要-std = c ++ 11