eclipse CDT показывает недопустимые аргументы «Кандидаты:» для лямбда-выражений

Eclipse IDE для разработчиков C/C++ (включает инкубационные компоненты)
Версия: 2020-06 (4.16.0)
Идентификатор сборки: 20200615-1200

Средства разработки C/C++
Версия: 9.11.1.202006011430
Идентификатор сборки: 20200601-1605

Arch Linux с gcc 10.2.0

Учитывая следующий минимальный пример

#include <cstdint>
#include <functional>

struct LinkedElement {
    uint8_t index = 0;
    LinkedElement* next = nullptr;
};

static LinkedElement* linkedList;

LinkedElement* FindLinkedElement(std::function<bool(LinkedElement*)> filter)
{
    for (auto elem = linkedList; elem != nullptr; elem = elem->next)
    {
        if (filter(elem))
        {
            return elem;
        }
    }
    return nullptr;
}

int main(int argc, char **argv) {
    auto broken = FindLinkedElement([](LinkedElement* le){ return le->index > 0; });
    auto works = FindLinkedElement(nullptr);
}

eclipse подчеркнет первый FindLinkedElement в main() как семантическую ошибку (как определено в представлении «Проблемы») со следующим сообщением об ошибке

Invalid arguments '
Candidates are:
LinkedElement * FindLinkedElement(std::function<bool (LinkedElement *)>)
'

Вторая строка не помечена как ошибка. Компилятор полностью справляется со всем этим кодом. Как я могу заставить eclipse не рассматривать это как ошибку?


person Manuel Coenen    schedule 08.09.2020    source источник


Ответы (1)


Похоже, проблема была в arm-none-eabi-gcc 10.2.0. Теперь, запуская 9_2020_q2_update, я больше не вижу ошибок в eclipse.

person Manuel Coenen    schedule 12.10.2020