Eclipse CDT синтаксическая ошибка, но все равно компилируется - PullRequest
0 голосов
/ 16 ноября 2018

Я установил последнюю версию 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' неоднозначен

есть ли способ обновить индексатор затмения или что-то еще?

EDIT:
приведение аргумента к 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 для Фотона ( 19 ноября 2018 )

Eclipse 4.6 (Neon 2016) больше не поддерживается.(CDT 9.2)
Eclipse 4.8 (Photon 2018) больше не поддерживается.(CDT 9.5)
Eclipse 4.9 (2019) сейчас на подъеме, начиная с CDT 9.6.

1 Ответ

0 голосов
/ 16 ноября 2018

Эта проблема затрагивает заголовки стандартной библиотеки GCC 8, отслеживаемые в Ошибка Eclipse 540957 .Это было исправлено для CDT 9.6 (выпущено как часть Eclipse 2018-12).

ОБНОВЛЕНИЕ : ошибка была также исправлена ​​для CDT 9.5.5, который планируется длявыпуск на 2018-11-19.Если вы используете Eclipse Photon или более позднюю версию, Help -> Check for Updates должно забрать это обновление, как только оно выйдет.

Обходной путь до тех пор - использовать GCC 7 или более раннюю версию.

...