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 не рассматривать это как ошибку?