如何打开英特尔C++编译器12.1.2的C++ 0x

Jac*_*Lee 3 c++ compiler-construction intel c++11

我在Arch Linux 3.2.1上安装了最新版本的英特尔C++编译器v12.1.2.当我用icpc编译我的C++文件时

icpc -O3 -DNDEBUG -std=gnu++0x -o obj/main.o src/main.cpp -c
Run Code Online (Sandbox Code Playgroud)

要么

icpc -O3 -DNDEBUG -std=c++0x -o obj/main.o src/main.cpp -c
Run Code Online (Sandbox Code Playgroud)

突然出现警告

Warning #2928: the __GXX_EXPERIMENTAL_CXX0X__ macro is disabled when using GNU version 4.6 with the c++0x option
Run Code Online (Sandbox Code Playgroud)

我的main.cpp包含许多C++ 0x功能,例如rvalue references,auto等.但是Intel编译器在C++ 0x模式下不起作用.如何打开其C++ 0x功能?

Mas*_*ano 6

我不得不一直在努力,但快速解决方案似乎是:

  1. 安装libstdc ++ 4.5(或更早版本)
  2. 编译 icpc -gcc-name=gcc-4.5 -std=c++0x

问题是英特尔编译器不支持GNU编译器从版本4.6开始执行的所有C++ 0x功能.这导致与GNU libstdc ++标头不兼容,因为目前所有C++ 0x功能都受到唯一宏的保护,__GXX_EXPERIMENTAL_CXX0X__并且无法单独启用或禁用.