C++ 中的嵌套 Lambda 捕获 [重复]

2024-04-10

我有类似的东西:

// think of Synonym as a set/vector of values
// the purpose of this function is to filter out elements from the 2 synonyms/sets,
// that are not related (similar to SQL inner join) - modifier modifies vars
void Clauses::modifies(Synonym& modifiers, Synonym& modifiedVars, UnaryPredicate isModifies) {
    // filter out any modifiers that does not modify (is related to) any of the variables in modifiedVar (left join)
    modifiers.removeIf([modifiedVars, &isModifies](int line) -> bool {
        return modifiedVars.none([line, &isModifies](int v) -> bool { 
            return isModifies(line, v);
        });
    });

    // filter out any candidate modifiedVars that is not modified by any modifiers (right join)
    modifiedVars.removeIf([modifiers, &isModifies](int varIndex) -> bool {
        return modifiers.none([varIndex, &isModifies](int line) -> bool {
            return isModifies(line, varIndex);
        });
    });

    // result is an something like an SQL inner join
}

问题是 Visual Studio 抱怨:

Error   1   error C3480: 'PQL::Clauses::`anonymous-namespace'::<lambda1>::isModifies': a lambda capture variable must be from an enclosing function scope   h:\dropbox\sch\cs3202\spa_cpp\spa\pql.cpp   78
Error   2   error C2665: 'PQL::Clauses::`anonymous-namespace'::<lambda3>::<lambda3>' : none of the 2 overloads could convert all the argument types h:\dropbox\sch\cs3202\spa_cpp\spa\pql.cpp   78
... 

最初,代码不会将谓词/条件作为引用传递,但在我认为需要它的地方阅读,但它似乎没有改变任何东西

modifiers.removeIf([modifiedVars, isModifies] ...

UPDATE: 我在这个项目中使用VS2010


如果您使用的是 Visual Studio 2010,您的代码可能会触发一个错误,该错误不允许您捕获嵌套 lambda 中的变量。

尝试使用默认捕获模式(例如 [&])作为解决方法。

该错误在 VS2012 中已修复。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 中的嵌套 Lambda 捕获 [重复] 的相关文章

  • IEnumerable 的 String.Join(string, string[]) 的类似物

    class String包含非常有用的方法 String Join string string 它从数组创建一个字符串 用给定的符号分隔数组的每个元素 但一般来说 它不会在最后一个元素之后添加分隔符 我将它用于 ASP NET 编码 以用
  • C free() 是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 malloc 和 free 如何工作 https stackoverflow com questions 1119134 how malloc and free work include
  • XPATH 查询、HtmlAgilityPack 和提取文本

    我一直在尝试从名为 tim new 的类中提取链接 我也得到了解决方案 给出了解决方案 片段和必要的信息here https stackoverflow com questions 2982862 extracting a table ro
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • while循环中的变量初始化

    我有一个可以分块读取文件的函数 public static DataObject ReadNextFile 数据对象看起来像这样 public DataObject public string Category get set And ot
  • 在 C++11 中移出 stdpriority_queue 的元素

    最小的工作示例 include
  • 用于连接 DataTable 上的动态列的动态 LINQ

    我目前遇到的情况不确定如何继续 我有两个从数据库填充的数据表 我还有一个可用的列名称列表 可用于将这两个数据表连接在一起 我希望编写一组 LINQ 查询 这些查询将 显示两个数据表中的行 内部联接 用于从一个数据表更新另一个数据表 显示一个
  • 为什么不能调用带有 auto& 参数的 const mutable lambda?

    include
  • 无法为 wsdl 文件创建服务引用

    I have wsdl文件和xsd我本地机器上的文件 我想在项目中添加服务引用 我没有网络服务 我只有wsdl file 我收到以下错误 The document was understood but it could not be pro
  • 将错误代码映射到 C++ 中的字符串

    将错误代码从枚举映射到字符串的更有效方法是什么 在 C 中 例如 现在我正在做这样的事情 std string ErrorCodeToString enum errorCode switch errorCode case ERROR ONE
  • 使用多线程进行矩阵乘法?

    我应该使用线程将两个矩阵相乘 有两件事 当我运行程序时 我不断得到 0 我还收到消息错误 对于每个错误 它在粗体行上显示 警告 从不兼容的指针类型传递 printMatrix 的参数1 我尝试打印输出 还要注意 第一个粗体块 这是我解决问题
  • 为什么 f(i = -1, i = -1) 是未定义的行为?

    我正在读关于违反评估顺序 http en cppreference com w cpp language eval order 他们举了一个令我困惑的例子 1 如果标量对象上的副作用相对于同一标量对象上的另一个副作用是无序的 则行为未定义
  • 无法在 C# 中为 EventArgs 分配使用派生类型的事件处理程序

    所以我有一个事件声明如下 public event EventHandler OnChangeDetected 然后我有以下处理程序被分配给该事件 myObject OnChangeDetected OnTableChanged 我的理解是
  • 浮点字节序?

    我正在为实时海上模拟器编写客户端和服务器 并且由于我必须通过套接字发送大量数据 因此我使用二进制数据来最大化可以发送的数据量 我已经了解整数字节顺序以及如何使用htonl and ntohl为了规避字节顺序问题 但我的应用程序与几乎所有模拟
  • 如何在dll级别读取app.config? [复制]

    这个问题在这里已经有答案了 我在一个解决方案中有一个控制台应用程序项目和库项目 dll The 图书馆项目有 app config 文件 我在其中存储我在库中使用的一些键值对 控制台应用程序引用此 dll 我有另一个 app config
  • 如何将 int 作为“void *”传递给线程启动函数?

    我最初有一个用于斐波那契变量数组的全局变量 但发现这是不允许的 我需要进行基本的多线程处理并处理竞争条件 但我无法在 pthread 创建中将 int 作为 void 参数提供 我尝试过使用常量指针 但没有成功 由于某些奇怪的原因 void
  • 这种尺寸对齐是如何工作的

    对于所提供的评论 我无法理解以下代码 这段代码的作用是什么 以及等效的代码是什么8 aligned segment size must be 4 aligned attr gt options ssize 3 Here ssize is o
  • 使用 C# 动态创建按钮并按预定义的顺序放置它们

    NET 4 5 C 创建 Windows 窗体 我想动态创建和添加按钮并为其分配单击事件 但希望它们以特定的方式动态放置 就像图像一样 我的问题是如何以上述方式动态放置按钮 即 4x4 格式 一行 4 个按钮 4 列 但行数不受限制 是否可
  • 为什么表达式 a = a + b - ( b = a ) 在 C++ 中给出序列点警告?

    以下是测试代码 int main int a 3 int b 4 a a b b a cout lt lt a lt lt a lt lt lt lt b lt lt b lt lt n return 0 编译此命令会出现以下警告 gt g
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost

随机推荐

  • Google Cloud SQL 连接到 flutter

    我在互联网上呆了 3 天 试图找到一些可以帮助我在 Google Cloud 和我的 flutter 应用程序上设置 PostreSQL 服务器的东西 无论是文档还是互联网上的任何地方都没有关于 flutter 应用程序如何连接 设置甚至在
  • AlarmManager 在模拟器中运行良好,但在真实设备中运行不佳

    这是我设置闹钟的代码 public void SetAlarm Context context int tag long time AlarmManager am AlarmManager context getSystemService
  • 将每 2 个 div 包裹在一个新的 div 中

    假设我有这个 div class somediv div div class somediv div div class somediv div div class somediv div div class somediv div div
  • Qt Designer 不加载我的自定义小部件插件

    我正在阅读 使用 Qt4 进行 C GUI 编程 一书 并且已经达到了将自定义小部件与 Qt Designer 集成的主题 我已经构建了那里概述的示例项目 图标编辑器插件 并且我得到了一个名为 libiconeditorplugin so
  • 如何强制执行新的空 EF 迁移?

    好的 所以我完全依赖我的迁移和种子代码来维护所有数据库结构和初始数据 因此 我面临的情况是 我在此版本中所做的所有更改都是直接在数据库 存储过程和更新 上进行的 并且 C 代码本身没有任何更改 问题是 由于我想使用新的迁移来执行这些数据库特
  • 生产中的 GWT 源映射

    GWT 支持超级开发模式下的源映射 不幸的是 尽管我在 gwt xml 文件中添加了源映射选项 但它们似乎无法在生产模式下工作 如何在那里启用它们 看看 GWT 自己的网站是如何做到这一点的 https gwt googlesource c
  • 如何离线安装Flask? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我已经在我的电脑上下载了 Flask 然后我就断开了连接 现在我需要在没有互联网连接的情况下安装 Flask 离线安装 Flask 还需要什
  • Wildfly 中有多个持久单元?

    Wildfly 9 0 2 应用程序中是否可以有两个持久性单元 我收到 WFLYJPA0061 未指定持久性单元名称 并且应用程序部署部署 jasper web war 中有 2 个持久性单元定义 要么将应用程序部署更改为只有一个持久性单元
  • Java 中使用分隔符“.”的分词问题

    我需要使用分隔符分割文本 例如我想要这个字符串 Washington is the U S Capital Barack is living there 分为两部分 Washington is the U S Capital Barack
  • Spring Security 中具有密码授予的 oAuth2 客户端

    我正在使用一组受 oAuth2 保护的服务 目前的工作原理如下 客户端使用用户名和密码登录 我用这些换取代币 我将令牌保留在会话中 并在每次想要调用服务时提交它 它可以工作 但问题是我完全手动执行此操作 而没有使用 Spring Secur
  • 使用命令中断循环

    在我的 Python Discord Bot 中 我想创建一个命令 这会导致循环运行 当我输入第二个命令时 循环应该停止 那么粗略地说 client event async def on message message if message
  • Node.js 中多线程处理文件

    我需要从在线 url 读取文件并在多线程中处理它并将其写入另一个输出中 https www w3 org TR PNG iso 8859 1 txt https www w3 org TR PNG iso 8859 1 txt我尝试过的解决
  • 如何测量图像上绘制的线的长度? C#

    我想编写一个应用程序来测量在显微镜下检查的样本碎片 我认为最好的方法是捕获图像并在样本的选定部分上绘制 然后以像素为单位计算绘制线的值 然后将该值转换为适当的单位 是否有任何东西可以帮助解决已经实现的此类问题 或者有任何工具 包或允许此类计
  • C# LINQ 用有意义的字符串替换空值

    从列表中 class Delivery public string ProductCode get set public DateTime OrderedDate get set public DateTime DeliveryDate g
  • 如何在 iPhone 上运行的应用程序中浏览核心数据?

    我正在开发一个使用核心数据的 iPhone 项目 并试图找到一种方法来轻松浏览数据的存储方式 具体来说 我将图像存储在核心数据中 并想查看它们占用了多少空间等 我发现了一个名为 核心数据编辑器 的应用程序 可以让你在 iPhone 模拟器上
  • 将球体上的 3d 点转换为 UV 坐标

    我在球体上有一个 3d 点 想要将其转换为球体纹理上的 UV 点 有人可以指出正确的方向吗 我可以采用纯数学解决方案 Edit 我目前有这个 它不会返回正确的 UV 坐标 p 是球体上的 3d 点 mesh position 是球体的位置
  • Phoenix:订购查询集

    我 一个菜鸟 为了好玩而玩弄 Phoenix 框架并构建一个小型 Twitter 克隆 我一切正常 但是 我想按updated at字段 升序 正如您从 tweet controller 中看到的 我尝试过使用 order by 子句 但这
  • (MySQL) 在文件特定列中加载数据

    我在将数据加载到表的特定列时遇到问题 CSV 文件是动态构建的 具有默认字段 ID LAST REFRESH ALIAS1 和可能含有ALIAS2 至 ALIAS8 当前 CSV 仅包含 ALIAS1 4 MySQL 表包含 ID LAST
  • 在 64 位 Windows 计算机上使用 32 位 com 运行 32 位应用程序

    我有一个使用 C COM 对象的 C 应用程序 两者都构建在 32 位计算机上 现在我必须在 64 位机器上运行它们 我注册了COM对象 在计算机 hkey classes root wow6432node clsid xxx 下的寄存器中
  • C++ 中的嵌套 Lambda 捕获 [重复]

    这个问题在这里已经有答案了 我有类似的东西 think of Synonym as a set vector of values the purpose of this function is to filter out elements