Eclipse IDE для разработчиков на C / C ++: ошибка «неверные аргументы» отображается по ошибке? - PullRequest
0 голосов
/ 09 сентября 2018

Я получаю сообщение об ошибке неверных аргументов в Eclipse IDE для разработчиков C / C ++ Photon (4.8.0) в map_name.insert(make_pair("string_name", int_name);.

Я использую 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 голосов
/ 14 сентября 2018

Стандартная реализация библиотеки, которая поставляется с GCC 8, использует встроенную черту типа с именем __is_constructible, которую анализатор Eclipse CDT еще не поддерживает.

Это может привести к ложно-положительным ошибкам при выполнении CDT для анализа стандартного библиотечного кода GCC 8.

Если вы используете GCC 7 или более раннюю версию, вы не получите никаких ошибок для этого кода.

ОБНОВЛЕНИЕ : Эта ошибка затмения отслеживает добавление поддержки __is_constructible в анализатор CDT. Это было недавно исправлено, хотя исправление еще не появилось в выпуске CDT.

...