我在 QtCreator 中使用 Intel C++ 编译器和 qmake。在我的项目中,我使用 std::map。
std::map<int,double> dataBase;
dataBase[2] = 2.445;
此代码使用 g++ 编译和运行没有任何问题。如果我尝试使用 ICC 进行编译,则会出现以下错误:
/usr/include/c++/4.8.0/tuple(1075): error: "pair" is not a nonstatic data member or base class of class "std::pair<const int, double>"
完整的编译器错误要长得多。我对包含路径有点困惑,因为对我来说它看起来像一个使用的 g++ 库。如果我注释掉这部分程序编译,我可以验证是否使用了 ICC。
有人知道为什么英特尔 C++ 编译器会导致此错误吗?
编辑:
我创建了一个最小的示例,并找到了导致此问题的编译器选项:以下是 *.pro 文件的内容
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.cpp
QMAKE_CXXFLAGS += -std=c++11
主文件
#include <iostream>
#include <map>
using namespace std;
int main(){
map<int,double> dataBase;
dataBase[2] = 2.445;
cout << dataBase[2] << endl;
return 0;
}
它没有
-std=c++11
但会导致编译器错误。