c++ - std::map::emplace() 缺失 - 过时的库?

标签 c++ c++11

我正在尝试使用 map 的 C++11 emplace() 函数,但 NetBeans 说 map 没有这样的函数。查看 header ,它是“正确的”——没有提及(在 Fedora 16 上)emplace()。这一切都很好,你知道……但我有点想使用 emplace()。

如何启用此功能?我知道它自去年三月以来就存在,可能更早。彻底的搜索表明 emplace() 基本上只存在于我的系统中的列表和 vector 的标题中。由于近十年来 C++ 没有重大修订,所以我没有运气找到有关如果库“错误”该怎么办的文档。

最佳答案

如果您的实现不支持某些功能,您有两种选择:

  • 不要使用该功能
  • 使用支持您需要的其他实现。

新标准的出现并没有扩大选择范围。事实上,它减少了它,因为您将很难找到一个支持您为每个目标所需的一切的实现。

请注意,对于纯库的东西,其他实现可能是您制作的:兼容性包装器在过渡时间中出现增加。但是您必须注意名称冲突的影响(当功能出现在其标准位置时,兼容性包装器的可见性可能会增加代码的歧义)。

关于c++ - std::map::emplace() 缺失 - 过时的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8971670/

相关文章:

c++ - 使用 `A<int>::template B<int> x;` 定义变量是否符合 C++ 标准?

c++11 - C++ CRTP : How to make only one (some) function of the base class as a friend to to the derived class?

c++ - 从标准容器生成 std​​::tuple

c++ - 如何计算将对象插入 vector 时使用复制构造函数的次数?

c++ - 使用 boost python 和 python 3.2 的 Hello world

c++ - 为什么我的递归函数中的循环是无限的?

c++ - 将赋值 move 到具有 const 值的对象

c++ - 括号序列的类型

c++ - Boost字符串算法错误

c++ - 从变量转换时出现 std::chrono::time_point 编译器错误