我试图在unordered_map中使用emplace()函数,但编译器显示不存在该函数。
我添加了-std=c+11选项, 但它提示说“cc1plus.exe:错误:无法识别的命令行选项'-std=c+11'”
我是否可以在mingw中使用C++11功能呢?
来自GCC文档
C++0x是新的ISO C++标准的工作名称,后来在2011年发布为C++11,并将许多新功能引入标准C++语言和库。该项目旨在在GCC中实现新的C++11功能,并使其成为最早将C++11带给C++程序员的编译器之一。
C++11功能作为“主线”GCC编译器的一部分可以在GCC的Subversion存储库的主干和GCC 4.3及更高版本中使用。要启用C++0x支持,请在g ++命令行上添加命令行参数-std = c++0x 。或者,要除了C++0x扩展之外还启用GNU扩展,请在g++命令行上添加-std = gnu ++0x。 GCC 4.7及更高版本也支持-std=c++11和-std=gnu++11。
因此,对于gcc 4.3到4.6,请使用-std=c++0x,对于更新版本,请使用-std=c++11。 gcc 4.8中添加了对map::emplace
库的支持。
emplace
在map
中是缺失的。另请参见http://ideone.com/dqScM9 安装MinGW 4.8是一个安全的选择,例如从http://nuwen.net/mingw.html安装。 - TemplateRex
c++11
而不是c+11
。 - Andy Prowlgcc -v
来检查)std=c++11
是相对较新引入的。 - milleniumbug