关于默认捕获模式和 C++ lambda 表达式中的“this”的限制

2024-02-13

我想知道为什么= 捕获默认值模式禁止this in 捕获列表 of C++ 拉姆达表达式.

That is,

[=, this]{ };  // error
[&, this]{ };  // OK

这是由 C++11 5.1.2/8 指定的。

  • 如果 lambda-capture 包含捕获默认值 &,则 lambda 捕获中的标识符不得以 & 开头。
  • 如果 lambda 捕获包含捕获默认值 =,则 lambda-capture 不应包含此及其包含的每个标识符 前面应加 &。

问:这个规定有什么理由或背景吗?


this只能通过复制来捕获never引用。即使您仅指定[&], this如果使用了 odr,则可以通过副本隐式捕获。所以,[=, this]是一个错误,因为=已经隐式捕获this通过复制而& in [&, this]表示通过引用捕获并且不隐式捕获this(除非使用了 odr)

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

关于默认捕获模式和 C++ lambda 表达式中的“this”的限制 的相关文章

  • Mono 无法保存用户设置

    我在 Mono Ubuntu 上保存用户设置时遇到问题 这是代码示例 private void Form1 Load object sender EventArgs e string savedText Properties Setting
  • 在 C++ 中分割大文件

    我正在尝试编写一个程序 该程序接受一个大文件 任何类型 并将其分成许多较小的 块 我想我已经有了基本的想法 但由于某种原因我无法创建超过 12 kb 的块大小 我知道谷歌等上有一些解决方案 但我更感兴趣的是了解这个限制的根源是什么 然后实际
  • 如何进行带有偏差的浮点舍入(始终向上或向下舍入)?

    我想以偏置舍入浮动 要么总是向下 要么总是向上 代码中有一个特定的点 我需要这个 程序的其余部分应该像往常一样四舍五入到最接近的值 例如 我想四舍五入到最接近的 1 10 倍数 最接近 7 10 的浮点数约为 0 69999998807 但
  • 在 OpenCL 中将函数作为参数传递

    是否可以在 OpenCL 1 2 中将函数指针传递给内核 我知道可以用C实现 但不知道如何在OpenCL的C中实现 编辑 我想做这篇文章中描述的同样的事情 在 C 中如何将函数作为参数传递 https stackoverflow com q
  • 通信对象 System.ServiceModel.Channels.ServiceChannel 不能用于通信

    通信对象System ServiceModel Channels ServiceChannel 无法用于通信 因为它处于故障状态 这个错误到底是什么意思 我该如何解决它 您收到此错误是因为您让服务器端发生 NET 异常 并且您没有捕获并处理
  • try-catch 中未处理的异常

    try list from XElement e in d Descendants wix File where e Attribute Name Value Contains temp Name e Parent Parent Attri
  • 获取从属性构造函数内部应用到哪个属性的成员?

    我有一个自定义属性 在自定义属性的构造函数内 我想将属性的属性值设置为属性所应用到的属性的类型 是否有某种方式可以访问该属性所应用到的成员从我的属性类内部 可以从 NET 4 5 using CallerMemberName Somethi
  • VS30063:您无权访问 https://dev.azure.com

    我正在尝试在 asp net core 2 1 mvc 应用程序中使用以下代码连接 Azure DevOps Uri orgUrl new Uri https dev azure com xxxxx String personalAcces
  • 为什么密码错误会导致“填充无效且无法删除”?

    我需要一些简单的字符串加密 所以我编写了以下代码 有很多 灵感 来自here http www codeproject com KB security DotNetCrypto aspx create and initialize a cr
  • 如何用 kevent() 替换 select() 以获得更高的性能?

    来自Kqueue 维基百科页面 http en wikipedia org wiki Kqueue Kqueue 在内核和用户空间之间提供高效的输入和输出事件管道 因此 可以修改事件过滤器以及接收待处理事件 同时每次主事件循环迭代仅使用对
  • 在 C# 中将位从 ulong 复制到 long

    所以看来 NET 性能计数器类型 http msdn microsoft com en us library system diagnostics performancecounter aspx有一个恼人的问题 它暴露了long对于计数器
  • 转到 C# WPF 中的第一页

    我正在 WPF 中使用导航服务 为了导航到页面 我使用 this NavigationService Navigate new MyPage 为了返回我使用 this NavigationService GoBack 但是如何在不使用的情况
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • 从匿名类型获取值

    我有一个方法如下 public void MyMethod object obj implement 我这样称呼它 MyMethod new myparam waoww 那么我该如何实施MyMethod 获取 myparam 值 Edit
  • Fluent NHibernate 日期时间 UTC

    我想创建一个流畅的 nhibernate 映射来通过以下方式映射 DateTime 字段 保存时 保存 UTC 值 读取时 调整为本地时区值 实现此映射的最佳方法是什么 就我个人而言 我会将日期存储在 UTC 格式的对象中 然后在读 写时在
  • 运行代码首先迁移更新数据库时出错

    我在迁移到数据库时遇到问题 并且似乎找不到我遇到的错误的答案 System MissingMethodException Method not found System Data Entity Migrations Builders Tab
  • 以编程方式使用自定义元素创建网格

    我正在尝试以编程方式创建一个网格 并将自定义控件作为子项附加到网格中 作为 2x2 矩阵中的第 0 行第 0 列 为了让事情变得更棘手 我使用了 MVVM 设计模式 下面是一些代码可以帮助大家理解这个想法 应用程序 xaml cs base
  • boost::program_options:带有固定和可变标记的参数?

    是否可以在 boost program options 中使用此类参数 program p1 123 p2 234 p3 345 p12 678 即 是否可以使用第一个标记指定参数名称 例如 p 后跟一个数字 是动态的吗 我想避免这种情况

随机推荐

  • 相对于 .js 文件的 Angular 指令 templateUrl

    我正在构建一个角度指令 它将在几个不同的位置使用 我不能总是保证使用该指令的应用程序的文件结构 但我可以强制用户将directive js and directive html 不是真实的文件名 在同一文件夹中 当页面评估时directiv
  • 第一个参数不是开放的 RODBC 通道

    我通过 DNS 连接到 Oracle 数据库 在 tnsnames ora 上设置名称为 database 的连接 我能够成功运行以下代码 con lt DBI dbConnect odbc odbc database UID user P
  • Hibernate 搜索问题 - 无法初始化代理 - 没有会话

    使用休眠添加新记录时出现以下异常 我还使用 Hibernate 搜索来创建索引 这是我的例外 Jun 11 2009 1 01 23 PM org hibernate LazyInitializationException
  • C# 中的垃圾收集未执行。为什么?

    我尝试了一个简单的实验来验证垃圾收集器的功能 参考文献3 9 自动内存管理 https msdn microsoft com en us library aa691138 28v vs 71 29 aspx MSDN 关于自动内存管理 NE
  • 从 UIWebView 中清除凭据

    我在这里所做的是获取具有身份验证的 URL 因此 我使用该功能 void connection NSURLConnection connection didReceiveAuthenticationChallenge NSURLAuthen
  • 使用 Flutter 在谷歌地图中添加标记

    我已经成功在我的 flutter 应用程序中创建了一个谷歌地图 并且我能够显示我的位置以及使用纬度和经度的标记 有谁知道如何为谷歌地图中已存在的企业创建标记 我应该向标记传递什么来识别已经在谷歌地图中的企业 谢谢 您可以使用地点搜索 htt
  • 如何使用 ssh 在 Heroku 上保持日志尾部处于活动状态?

    Using heroku logs tail这几分钟效果很好 然后它停止显示日志 看来 ssh 连接超时并终止 没有错误或消息 在 Ubuntu 11 04 中使用有线连接 我将以下内容添加到 ssh config 中 ServerAliv
  • 绘制逻辑回归的决策边界

    我正在尝试实施逻辑回归 我已将特征映射到 x1 2 x2 0 x1 1 x2 1 形式的多项式 现在我想绘制相同的决策边界 经历了这一切之后answer https stackoverflow com a 22356551 1783688我
  • SQL 查询游程长度或连续相同值编码

    我的目标是获取一组按顺序排序的数据id并返回一个结果集 该结果集指示连续行数val列是相同的 例如 鉴于此数据 id val 1 33 2 33 3 44 4 28 5 44 6 44 我想看到这个结果 id val run length
  • 多页 tiff 的简单 WPF 页面选择

    我正在制作一个基本的 Tiff 查看器 需要能够选择要查看的页面 在 Winforms 中 我可以使用 selectActiveFrame 所以我想知道是否有一个与此等效的 WPF 谢谢 编辑 在winforms中 我在selectActi
  • 如何使用boto读取S3上的二进制文件?

    我在 S3 文件夹 私人部分 中有一系列 Python 脚本 Excel 文件 如果它们是公开的 我可以通过 HTTP URL 读取访问它们 想知道如何以二进制方式访问它们以执行它们 FileURL URL of the File host
  • Android Phonegap:$.ajax 不会触发未经授权的回调(401)

    我正在使用 PhoneGap 构建 Android 应用程序 使用 jQuery 或 Zepto 我可以使用 ajax 调用来调用网站 API 然而 当网站返回 401 未经授权 响应时 ajax 调用似乎没有回调 没有调用 成功 错误 或
  • 在 Angular 的 Bower 组件中包含 html 模板

    我正在为我的角度应用程序制作一些可重用的指令 方法是将它们放入单独的 Bower 组件中 我想使用 templateUrl 作为指令 这样我就不会被迫执行本文中的三个选项之一 如何在我的 Angular 指令 Bower 包中使用单独的模板
  • SQL Server 条件 JOIN 语句

    是否可以执行以下操作 IF a 1234 THEN JOIN ON TableA ELSE JOIN ON TableB 如果是这样 正确的语法是什么 我认为您所要求的通过加入Initial两个表Option A and Option B
  • 如何准确读取一行?

    我有一个 Linux 文件描述符 来自套接字 我想读取一行 如何在 C 中做到这一点 如果您正在从 TCP 套接字读取数据 您无法假设何时到达行尾 因此你需要这样的东西 std string line char buf 1024 int n
  • 如何以编程方式向 iOS 地址簿添加“自定义标签”?

    在 iOS 地址簿中手动添加联系人的电话 IMS 时 您可以添加自定义标签 而不是 家庭 工作 其他 在 IMS 中 如何以编程方式在AddressBook中创建 自定义标签 我也有同样的问题 我找不到答案 所以我只是尝试猜测和检查方法 以
  • 获取matlab中fit函数的函数句柄并分配fit参数

    我正在将自定义函数拟合到我的数据中 获得拟合后 我想获得类似拟合函数的函数句柄之类的东西 包括设置为拟合找到的参数的参数 我知道我可以得到模型 formula fit 我可以通过以下方式获取参数 coeffvalues fit 但有没有什么
  • 为每个文件调用 Inno Setup AfterInstall 函数

    我想在安装文件夹后调用一个函数 但是InstallEnv函数似乎被调用了几次 也许每个文件都是文件夹 待确认 有没有办法在安装所有这些文件后只调用一次 我无法使用Run部分 因为我想用返回代码进行错误捕获 Source InputFiles
  • 使用 useRef 响应滚动导航

    我正在尝试制作一个单页应用程序 您单击链接 它会向下滚动到与菜单项对应的部分 我花了几天时间研究适合我标准的修复方案 不幸的是 我运气不佳 我的标准如下 无外部依赖 地址栏中必须包含 URL 以允许直接链接到特定部分 不能是 hacky 即
  • 关于默认捕获模式和 C++ lambda 表达式中的“this”的限制

    我想知道为什么 捕获默认值模式禁止this in 捕获列表 of C 拉姆达表达式 That is this error this OK 这是由 C 11 5 1 2 8 指定的 如果 lambda capture 包含捕获默认值 则 la