我无法通过引用捕获传递 lambda

2024-04-26

以下代码失败并出现此错误

E0413 不存在从“lambda []float (int i)->float”到“float (*)(int i)”的合适转换函数

int test;   
float (*f)(int i) = [&](int i) -> float {return test; };

我该如何解决?我需要捕获条款。


您只能使用无捕获的 lambda 执行上述操作。

See [expr.prim.lambda.closure] http://eel.is/c++draft/expr.prim.lambda.closure#def:closure_type (sec 7)

非泛型 lambda 表达式的闭包类型不 lambda 捕获其约束(如果有)很满意有一个 将函数转换为函数指针与C++语言联动 具有与闭包类型相同的参数和返回类型 函数调用运算符。

Since lambda 不仅仅是普通函数 https://en.cppreference.com/w/cpp/language/lambda并捕获它需要保留国家, 您找不到任何简单或常规的解决方案来使它们分配给函数指针。


要修复,您可以使用std::function https://en.cppreference.com/w/cpp/utility/functional/function这将通过类型擦除来完成:

#include <functional> // std::function

int test;
std::function<float(int)> f = [&](int i) -> float {return static_cast<float>(test); };
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我无法通过引用捕获传递 lambda 的相关文章

  • C++ 最大非负整数

    以下内容是否会在所有平台 int 大小等上按预期工作 或者有更容易接受的方法吗 我做了以下的事情 define MAX NON NEGATIVE INT int unsigned int 1 2 我不会通过解释它在做什么来侮辱你的智商 编辑
  • 将信号/槽(QObject)添加到 QGraphicsItem:性能受到影响?

    我想将信号 槽添加到 QGraphicsItem 以便我可以从另一个线程访问 QGraphicsItemObjects 我知道有两个选项 使用 QGraphicsObject 或从 QObject 和 QGraphicsItem 继承 使用
  • __libc_start_main 发生了什么?

    我真的很想理解从高级代码到可执行文件的步骤 但是遇到了一些困难 我写了一个空的int main C 文件并尝试通过以下方式破译反汇编objdump d 这是发生的事情 in start 设置对齐方式 将参数压入堆栈 调用 libc star
  • 如何从 OnChange 事件捕获文本框的值

    在我的 C MVC 应用程序中 我有一系列这样生成的文本框 foreach object item in items Html TextBox 渲染的结果是一系列看起来像这样的文本框
  • float.Parse 不再在 Unity 中工作 (C#)

    我有一个包含以下代码行的工作项目 public InputField mass float val float Parse mass text 非常简单 用户输入一定量的质量 然后将其从文本解析为浮动 几天前这工作得很好 我什至能够多次导出
  • EntityFramework:“参数值超出范围。”

    我在 EntityFramework 模型优先 中保存小数时遇到问题 在我的 EDMX 中 我声明我的属性为 Decimal 30 10 然后我尝试保存该数字 1215867935736100000 结果是 Parameter value
  • 如何测试 PARTIAL 视图在 C# ASP .NET MVC 中呈现

    我有一个视图 它内部有部分视图渲染 div class partialViewDiv Html RenderPartial partial Model SomeModelProperty div 和一个返回此视图的控制器 public Ac
  • g++.exe 和 x86_64-w64-mingw32-g++.exe 有什么区别?

    同样的问题也适用于 gcc ar 等 在 Code Blocks 中将工具链可执行文件从 Something exe 更改为 x86 64 w64 mingw32 something exe 时 代码仍然可以完美编译 此外 32 位和 64
  • C 或 C++ 中是否有轻量级的多部分/表单数据解析器? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在考虑将多部分表单数据解析集成到 Web 服务器模块中 以便可以减轻后端 Web 应用程序 通常用动
  • 使用正在运行的进程的共享内存收集核心转储

    核心转储仅收集进程空间 而不收集为进程间通信创建的共享内存 如何使核心转储也包含正在运行的进程的共享内存 设置核心文件过滤器 proc PID coredump filter per http man7 org linux man page
  • 将迭代器取消引用到临时范围时出现非指针操作数错误

    Using auto empty line auto str return str size 0 我们做得到 auto line range with first non empty ranges view drop while range
  • 在 Visual Studio 中调试时向后拖动指令指针

    如需演示 请查看 基本上 我知道这在 Visual Studio Community Edition 2015 中是可能的 我想知道 a 这与 Intellitrace 和 历史调试 有关吗 b 这样做会有副作用吗 或者这只是将指令向后移动
  • .NET 配置(app.config/web.config/settings.settings)

    我有一个 NET 应用程序 它具有用于调试和发布版本的不同配置文件 例如 调试 app config 文件指向开发SQL服务器 http en wikipedia org wiki Microsoft SQL Server它启用了调试并且发
  • 在 C 中初始化结构体的静态数组

    我正在用 C 实现一个纸牌游戏 纸牌有很多种类型 每种纸牌都有大量信息 包括一些需要单独编写与其关联的脚本的操作 给定这样的结构 并且我不确定我的语法是否适合函数指针 struct CARD int value int cost This
  • 在 QtCreator 中查看数组内容

    调试时是否可以在 Qt Creator 中查看数组的内容 似乎检测到我的数组是一个数组而不是一个指针 此外 我可以点击一个箭头 就像展开一样 但之后什么也没有显示 当我试穿的时候std vector Qt Creator 设法按预期显示内容
  • 列表框显示类名称而不是值

    我正在开发一个项目 其中用户应该向动物输入值 名称 年龄 性别等 并且用户输入的值应该显示在列表框中 这些类相互继承 以下是继承的工作原理 Animalclass 是所有类的父类 Mammal类继承自Animal class Dog类继承自
  • 串行端口轮询和数据处理

    我正在尝试通过微控制器从传感器的多个串行端口读取数据 每个串口将接收超过2000个测量值 每个测量值7个字节 全部为十六进制 而且他们同时开火 现在我正在从 4 个串行端口进行轮询 另外 我将每个测量值转换为字符串并将其附加到字符串构建器
  • C/C++ 特殊 CPU 功能的使用

    我很好奇 新的编译器是否使用了新 CPU 中内置的一些额外功能 例如 MMX SSE 3DNow 所以 我的意思是 在最初的 8086 中甚至没有 FPU 所以旧的编译器甚至不能使用它 但新的编译器可以 因为 FPU 是每个新 CPU 的一
  • 奇怪的 MSC 8.0 错误:“ESP 的值未在函数调用中正确保存...”

    我们最近尝试将一些 Visual Studio 项目分解为库 并且在测试项目中一切似乎都编译和构建得很好 其中一个库项目作为依赖项 然而 尝试运行该应用程序给我们带来了以下令人讨厌的运行时错误消息 运行时检查失败 0 ESP 的值未在函数调
  • 捕获 System.Exception 总是不好的做法吗?

    请考虑下面的代码 它抛出三个不同的异常 即 System Configuration ConfigurationErrorsException System FormatException and System OverflowExcept

随机推荐

  • C++ 或 Java 中保存 20 位整数的数据类型

    Java 或 C 中是否有可以保存 20 位或更多数字的整数值的数据类型 long long 数据类型最多只能容纳 18 位数字 Java具体 您正在寻找BigInteger http docs oracle com javase 7 do
  • 如何在H2中定义Oracle Package procedure进行测试

    我正在测试一个 Spring Boot 应用程序 该应用程序将数据读取 写入 Oracle DB 该 Oracle DB 具有 Oracle 包以及这些包中的过程 在某些时候 Spring Boot应用程序通过实体存储库调用此过程 如下所示
  • 模拟 with 语句中使用的类

    我有一堂课有一个 exit and enter 函数 以便我可以在 with 语句中使用它 例如 with ClassName as c c do something 我现在正在尝试编写一个单元测试来测试这一点 基本上 我想测试一下do s
  • 运行时静默更新应用程序

    我的应用程序最初将使用 Windows Installer 进行部署 我正在寻找的解决方案的主要特征包括 支持应用程序静默更新 运行 或自动重启 客户 易于维护和管理包装 过程 避免复杂的定制或 安装脚本 您对我如何实现这一目标有什么想法吗
  • 如何测试两个哈希值(密码)是否相似?

    当用户创建密码时 我对其进行哈希处理 包括盐 并将其保存在数据库中 现在 当用户想要更改他或她的密码时 我想测试新密码是否与旧密码太相似 我已经在不同的服务上看到过这种情况 尤其是网上银行 所以 我想我会使用similar text or
  • 更改 DataGridViewComboBoxColumn 单元格的背景颜色

    我创建了一个 DataGridView 对象 其中包含 DataGridViewComboBoxColumn 类型的列 以允许用户从下拉列表中选择值 例如 如果用户选择 高 我想对组合框的背面进行着色 但是 它不会为组合框着色 而只会为组合
  • 如何使用程序集绑定重定向来忽略修订号和内部版本号

    我有几个 C NET 应用程序 以及供它们访问数据库的 API 我想将 API 的所有版本放入数据库中 并让它们选择最高版本和内部版本号 但坚持使用它们构建时使用的主要版本号和次要版本号 基本上当我参考API时1 2 3 4我想要参考阅读1
  • 基于github仓库的本地仓库创建本地git仓库并保持更新

    我有一些基本的 git 知识 但我不知道如何实现这一点 我正在尝试克隆 github WordPress 入门主题下划线 https github com automattic s 这个想法是创建一个基本框架based 经过一些修改 在该存
  • 无法将 PHP 表单放入表格中

    我创建了一个工作正常的表单 但是当我将其放入表格中时 它总是认为该表单不完整 有没有办法可以将其放入表格中 这样看起来不错 而不会出现此问题 我的 HTML h2 class green Interested in making life
  • .Net Core Web Api 异步不重要吗?

    我一直在编写我的 Web Api 控制器方法async关键字并一直在使用async一直往下 我最近尝试创建一个方法同步来看看它会如何影响性能 并惊讶地发现它对任何其他 http 请求都没有阻塞影响 举个例子 Route Foo class
  • aws key 和 Secret 在 aws cli 上工作但在 jenkins 上不起作用

    我正在尝试运行 python 脚本 其中包含使用 boto3 sdk 访问 s3 的代码 我已经在我的 Windows 机器中创建了默认配置文件 aws cli 命令在窗口 cmd 中可以正常工作以访问 s3 存储桶 python 脚本在窗
  • PHP 计算 JSON 请求中返回的项目数?

    我正在寻找一种方法来计算在搜索数据库时得到的这些 JSON 字符串中返回的项目数 以 PHP 表示 请原谅我 因为我对这一切一无所知 有人告诉我 因为 JSON 版本中没有返回计数 就像此数据库中的 XML 版本一样 我必须使用循环来计算结
  • 简单的http服务器

    好吧 这可能是一个愚蠢的问题 但关于节点 我已经尽我所能了 我设置了一个服务器 使用我们可以在任何节点演示或教程中找到的代码 var http require http var server http createServer functi
  • 如何在VueJS中将所有事件传递给父级

    传递道具 In VueJS如果你设置inheritAttrs to false并使用v bind attrs 您将组件中未声明的所有 props 传递给其子组件 是否有类似的方法将来自子级的所有事件传递给其父级VueJS 代码示例 Wrap
  • 无法加载 Spring ApplicationContext

    我正在为一个有点复杂的 spring 应用程序编写单元测试 我想加载 spring 上下文以便使用定义的 bean 我的 context xml 位于 src main resources context xml Maven 构建后 con
  • Keras模型拟合多项式

    我从四次多项式生成了一些数据 并希望在 Keras 中创建一个回归模型来拟合该多项式 问题是拟合后的预测似乎基本上是线性的 由于这是我第一次使用神经网络 我认为我犯了一个非常微不足道且愚蠢的错误 这是我的代码 model Sequentia
  • 基于程序描述的多线程推荐

    我想描述我的程序的一些细节 并获得有关最适用的最佳多线程模型的反馈 我现在花了很多时间阅读有关 ThreadPool Threads Producer Consumer 等的内容 但尚未得出可靠的结论 我有一个文件列表 格式相同 但内容不同
  • 将 best_in_place 与富文本编辑器(如 TinyMCE)一起使用

    我正在使用best in placegem 在 Rails 应用程序中进行就地编辑 但是 我需要对某些文本区域进行 X HTML 编辑 因此我需要一个富文本编辑器 TinyMCE 正在该网站的其他地方使用 然而 添加一个编辑器并不简单bes
  • 有没有办法扩展 PHP 中的特征?

    我想使用现有的功能trait并创建我自己的trait在此之上只是为了稍后将其应用到课堂上 我想延长Laravel SoftDeletes特质SaveWithHistory函数 因此它将创建一个记录的副本作为已删除的记录 我也想扩展它reco
  • 我无法通过引用捕获传递 lambda

    以下代码失败并出现此错误 E0413 不存在从 lambda float int i gt float 到 float int i 的合适转换函数 int test float f int i int i gt float return t