Eclipse CDT 语法错误但仍然可以编译

Eclipse CDT syntax error but still compiles

我已经安装了最新的 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 报错:'insert' is ambiguous

有什么方法可以更新 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)
Eclipse 4.9 (2019) 正在崛起,从 CDT 9.6.

开始

这是一个影响 GCC 8 标准库头文件的问题,在 Eclipse bug 540957 中进行了跟踪。 CDT 9.6(作为 Eclipse 2018-12 的一部分发布)已修复。

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

在此之前的解决方法是使用 GCC 7 或更早版本。