如何开启Intel C++编译器12.1.2的C++0x

问题描述 投票:0回答:2

我在 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功能?

c++ c++11 icc
2个回答
6
投票

我必须努力解决这个问题,但快速的解决方案似乎是:

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

问题是 Intel 编译器不支持 GNU 编译器从 4.6 版本开始支持的所有 C++0x 功能。这会导致与 GNU libstdc++ 标头不兼容,因为目前所有 C++0x 功能都受唯一宏

__GXX_EXPERIMENTAL_CXX0X__
的保护,并且无法单独启用或禁用。


2
投票

检查这里。看来 C++0x 没有完全支持

© www.soinside.com 2019 - 2024. All rights reserved.