当前位置: 首页 > 知识库问答 >
问题:

C Lambda导致“候选函数不可行”:[重复]

呼延化
2023-03-14

为什么在添加捕获元素时,下面的lambda不符合签名?

[&callback](unsigned handle, void* userData, void* data, unsigned size) -> void { ... }

但这会吗?

[](unsigned handle, void* userData, void* data, unsigned size) -> void { ... }

签名:

typedef void (*em_async_wget2_data_onload_func)(unsigned, void*, void*, unsigned);

共有2个答案

沈博涉
2023-03-14

只有无资本lambda可以转换为指向函数的指针。

何灿
2023-03-14

带有捕获的Lambdas不能简单地转换为函数指针。为了获得最大的灵活性(但不是性能),请考虑使用std::function

 类似资料:
  • 我有一个api控制器操作,其中包含一个可选(且为空)参数。如果方法签名中存在此参数,则生成Swagger文档将失败,但如果将其从签名中删除,则生成成功。似乎可选参数是错误的原因,但我不知道为什么... 我正在使用Swashbuckle与ASPNET-API-Versioning的集成:https://github.com/microsoft/ASPNET-API-Versioning/wiki/S

  • 问题 你想要调用一个没有参数的函数,但不希望使用括号。 解决方案 不管怎样都使用括号。 另一个方法是使用 do 表示法,如下: notify = -> alert "Hello, user!" do notify if condition 编译成 JavaScript 则可表示为: var notify; notify = function() { return alert("Hello,

  • 我尝试了几乎所有类型的组合,但似乎都不起作用

  • 我有个问题: 我想创建一个chatwebapp,并使用Bootstrap进行布局。不幸的是,在下面的代码中,我得到了一个不应该存在的水平滚动条。我使用列和行,我知道在引导css中有一个填充,但当我试图移除它时,实际上什么也没有发生,滚动条仍停留在那里。也许你们能帮我。 null null

  • 我正在尝试实现一个可以遍历对象的函数。 此代码无法编译,因为 用scala 2.11.8和2.12.1复制。太奇怪了。为什么< code>el被假定为< code>Any? 我可以用猫图书馆解决它。所以问题不是“怎么做?”而是“为什么纯scala代码是错误的?”。

  • (2016.3.15更新) 上周我遇到了一个奇怪的问题,我想和你讨论一下这个问题。 但是,如果我使用sendMessage(SearchHandler.Object...)而不是runOnUiThread,一切都会很顺利!! java: SearchActivity.java: 2)在运行getActivity().runonuithread()之前,首先判断getActivity()==null