c++ - eclipse CDT 显示 lambda 表达式的无效参数“候选人是:...”
问题描述
面向 C/C++ 开发人员的 Eclipse IDE(包括孵化组件)
版本:2020-06 (4.16.0)
构建 ID:20200615-1200
C/C++ 开发工具
版本:9.11.1.202006011430内部版本号
:20200601-1605
带有 gcc 10.2.0 的 Arch Linux
给定以下最小示例
#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 不将此视为错误?
解决方案
看起来问题出在arm-none-eabi-gcc
10.2.0. 现在运行9_2020_q2_update
我在 Eclipse 中看不到更多错误。
推荐阅读
- android - 使用 Firebase 对 ArrayList 进行排序
- reactjs - 升级反应后,我在控制台上收到此错误
- r - 重新编码值序列
- ios - 永久删除行(或数组项) - swift 3/4
- c++ - C++ - 将结构类型的数组传递给用户定义的函数
- dataframe - Julia:Dataframes 包无法转换包含 int 和 float 的列
- c# - 在没有 Application Insights 的 Azure Function 中查看 TraceWriter.Info() 日志
- php - 如何在 Ubuntu 服务器 18.04 中安装 php7.1-unzip 来安装 Laravel5.7
- http - 我们可以在“master”以外的领域将用户添加到 keycloak 中吗?
- java - 输出格式,使用 for 循环或 while 循环增量打印堆中的节点