面向C / C ++开发人员的Eclipse IDE:错误显示“无效参数”错误?

时间:2018-09-08 22:17:14

标签: c++ eclipse-cdt

我在map_name.insert(make_pair("string_name", int_name);上的C / C ++开发人员Photon(4.8.0)的Eclipse IDE中收到无效参数错误。

我正在使用GCC 8.2.0。我正在尝试使用STL进行一些简单的操作。

尝试insert(make_pair())insert(pair<string, int>())都遇到相同的IDE错误(语义错误)。为什么会这样?

代码:

#include <iostream>
#include <map>
using namespace std;

int main()
{
    map<string, int> ages;

    ages["Mike"] = 21;
    ages["Johnny"] = 20;
    ages["Vicky"] = 30;
    ages["Mike"] = 42;

//  ages.insert(make_pair("Peter", 100));
    ages.insert(pair < string, int > ("Peter", 100));

    for(map<string, int>::iterator it = ages.begin(); it!=ages.end(); it++)
    {
        cout<< it->first<<": "<< it->second<<endl;

    }

     return (0);
}

这是IDE中显示的错误:

Error

1 个答案:

答案 0 :(得分:4)

GCC 8附带的标准库实现使用称为__is_constructible的类型特征固有,Eclipse CDT的解析器尚不支持这种特征。

在进行CDT解析GCC 8的标准库代码时,这可能会导致误报错误。

如果您使用的是GCC 7或更早版本,则此代码不会出现任何错误。

更新This eclipse bug跟踪向CDT的解析器添加对__is_constructible的支持。尽管该修复程序尚未出现在CDT版本中,但它最近已得到修复。