Eclipse CDT语法错误,但仍可编译

时间:2018-11-16 02:37:02

标签: c++ eclipse-cdt

我已经安装了最新的MinGW(8.1.0),并已通过Eclipse Neon和Photon进行了测试

#include <iostream>
#include <unordered_map>

int main(){
    std::unordered_map<int,std::string> dict = {{1,"one"},{2,"two"}};
    dict.insert({3,"three"});
    for(const auto& p: dict){std::cout << p.first << " = " << p.second << std::endl;}
}

它可以正常编译,但是insert方法带有红色下划线。

Eclipse给出错误:“插入”不明确

有什么方法可以更新日食索引器吗?

编辑:
将参数强制转换为const可以消除语法错误

dict.insert(std::pair<const int,std::string>{3,"three"});

编辑2:
或者您可以将MinGW(5.1.0)与C ++ 11方言一起使用

编辑3:
Eclipse Photon R
GCC 7.3.0

编辑4:
CDT 9.5.5 for Photon(19th Nov 2018

不再支持Eclipse 4.6(Neon 2016)。 (CDT 9.2)
不再支持Eclipse 4.8(Photon 2018)。 (CDT 9.5)
从CDT 9.6开始,Eclipse 4.9(2019)呈上升趋势。

1 个答案:

答案 0 :(得分:3)

这是一个影响Eclipse bug 540957中跟踪的GCC 8标准库标头的问题。它已针对CDT 9.6(作为Eclipse 2018-12的一部分发布)修复。

更新:CDT 9.5.5的错误也已修复,该错误计划于2018-11-19进行带外发行。如果您运行的是Eclipse Photon或更高版本,则Help -> Check for Updates应该在更新发布后立即使用。

一种解决方法是使用GCC 7或更早版本。