我在 Arch Linux 3.2.1 上安装了最新版本的 Intel C++ 编译器 v12.1.2。当我使用 icpc 编译我的 C++ 文件时
icpc -O3 -DNDEBUG -std=gnu++0x -o obj/main.o src/main.cpp -c
或
icpc -O3 -DNDEBUG -std=c++0x -o obj/main.o src/main.cpp -c
弹出警告
Warning #2928: the __GXX_EXPERIMENTAL_CXX0X__ macro is disabled when using GNU version 4.6 with the c++0x option
我的main.cpp包含许多C++0x功能,例如右值引用、自动等。但是Intel编译器无法在C++0x模式下工作。如何开启其C++0x功能?
我必须努力解决这个问题,但快速的解决方案似乎是:
icpc -gcc-name=gcc-4.5 -std=c++0x
问题是 Intel 编译器不支持 GNU 编译器从 4.6 版本开始支持的所有 C++0x 功能。这会导致与 GNU libstdc++ 标头不兼容,因为目前所有 C++0x 功能都受唯一宏
__GXX_EXPERIMENTAL_CXX0X__
的保护,并且无法单独启用或禁用。
检查这里。看来 C++0x 没有完全支持