在通用 lambda 捕获中使用 this 指针

2023-12-20

我有一个问题,Clang (3.6) 和 G++ (5.1) 有不同的意见:

#include <functional>

struct X
{
    X()
    {
        std::function<void (int)> f = [this](auto x){foo(x);};
    }

    void foo(int x){}
};

int main(){}

Clang 接受这一点,而 G++ 声明:

error: cannot call member function ‘void X::foo(int)’ without object

如果我调用,两个编译器都会接受它this->foo(x)直接代替,但我更想知道谁是对的。

注意:需要 lambda 签名中的“auto”和转换为 std::function 才能触发这种情况。


如果我直接调用 this->foo(x) ,两个编译器都会接受它,但我更想知道谁是对的。

考虑到它是在 gcc 5.2 中编译的,clang 在您的具体情况下是正确的。看起来这只是 gcc 5.1 中的一个错误。 gcc 6.0 也可以很好地编译。

而且它具有直观意义,this应该是暗示的。

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

在通用 lambda 捕获中使用 this 指针 的相关文章

  • 在 HKCR 中创建新密钥有效,但不起作用

    我有以下代码 它返回 成功 但使用两种不同的工具使用搜索字符串 3BDAAC43 E734 11D5 93AF 00105A990292 搜索注册表不会产生任何结果 RegistryKey RK Registry ClassesRoot C
  • 尝试了解使用服务打开对话框

    我已经阅读了有关使用 mvvm 模式打开对话框的讨论 我看过几个使用服务的示例 但我不明白所有部分如何组合在一起 我发布这个问题寻求指导 以了解我应该阅读哪些内容 以更好地理解我所缺少的内容 我将在下面发布我所拥有的内容 它确实有效 但从我
  • 在 CPP 类中将 C 函数声明为友元

    我需要在 C 函数中使用类的私有变量 我正在做这样的事情 class Helper private std string name public std getName return name friend extern C void in
  • Grpc - 将消息从一个客户端发送到连接到同一服务器的另一个客户端

    是否可以将消息从一个客户端发送到连接到同一服务器的另一个客户端 我想将数据从一个客户端发送到服务器然后发送到特定客户端 我想我需要获取客户端 ID 但我不知道如何获取此 ID 以及如何从服务器将此消息发送到该客户端 我这里有一个样本 这是一
  • Environment.CurrentDirectory 与 System.IO.Directory.GetCurrentDirectory

    我正在编写一个 Net WinForms 并不断在调试和发布配置之间切换 并且有一些文件我需要任一配置才能访问 我想做的是将文件放在 BIN 文件夹中的公共目录中 这样它看起来像这样 MyProject Bin CommonFiles My
  • MVC3中设置下拉列表中的所选项目

    我必须为视图中的下拉列表设置所选项目 但它不起作用 View div class editor label Html LabelFor model gt model Gender div div class editor field Htm
  • 未找到 Boost 库,但编译正常

    我正在尝试在 C 中使用 boost 的文件系统 使用时看起来编译没问题 c c Analyse c o Analyse o g W Wall L usr local lib lboost filesystem lboost system
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • 如何将 .txt 文件中的数据转换为 xml? C#

    我在一个文本文件中有数千行数据 我想通过将其转换为更容易搜索的内容来轻松搜索 我希望 XML 或其他类型的大型数据结构 尽管我不确定它是否是最好的对于我的想法 每行的数据如下所示 第 31 册 托马斯 乔治 32 34 154 每本书都不是
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • 在 C# 中为父窗体中的子窗体控件添加事件处理程序

    我有两种形式 一种是带有按钮和文本框的父表单 单击该按钮时 将打开一个对话框 该子窗体又包含一个文本框和一个按钮 现在我想要的是 每当子表单文本框中的文本更改时 父表单文本框中的文本会自动更改 为了获得这个 我所做的是 Form3 f3 n
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

    我从 MSDN 订阅升级到 Visual Studio 2015 因为我非常兴奋地阅读有关共享项目的信息 当我们想要做的只是重用代码时 不再需要在依赖项中管理 21382 个 nuget 包 所以我构建了一个测试共享项目 其中包含一些代码
  • Angular 4 中的箭头函数(Lambda 函数)

    我对lambda知之甚少 lambda表达式被视为一个函数 我们有很多方法可以做到这一点 这是我的简单功能TypeScript file byPan card1 card2 return card1 pan card2 pan 我在 HTM
  • 在 System.Type 上使用条件断点时出错

    这是函数 public void Init System Type Type this Type Type BuildFieldAttributes BuildDataColumns FieldAttributes 我在第一行设置了一个断点
  • 当用户更改 Windows 中的语言键盘布局时如何通知?

    I want to show a message to user when the user changes the language keyboard layout of Windows for example from EN to FR

随机推荐

  • 如何在 Metro 应用程序中禁用缓存 HTTP GET,我正在使用 IXMLHTTPRequest2

    我正在执行 http GET 来获取数据 我正在使用 IXMLHTTPRequest2 如果我获取 url http foo com curl http foo com 第二次再次获取此 url 时 服务器上的内容实际上已更改 但我得到的是
  • OAuth2 不记名令牌是否已签名?

    这可能是一个愚蠢或幼稚的问题 但是 OAuth2 不记名令牌是否已签名 换句话说 消费者是否能够验证不记名令牌是否由特定授权服务器颁发 不是 但目前正在努力解决这个问题 https stackoverflow com questions 1
  • 是否有支持 CSS3 和供应商特定扩展的 css 验证器?

    是否有支持 CSS3 和供应商特定扩展的 css 验证器 我只想查看 CSS 3 和供应商特定扩展相关错误以外的问题 还有比 W3C 更好的 xhtml css 验证器吗 您可以在 更多选项 gt 配置文件 部分中选择 CSS Level
  • JQuery mobile:如何验证表单并在页面上显示错误消息

    您好 我是 JQM 的新手 我正在尝试使用 JQM 登录页面 任何人都可以帮助我如何进行表单验证并在用户名和密码文本框下方显示错误 如果它们留空 并且当存在无效登录时 我必须将其显示为表单顶部的错误消息 这是我的html
  • iOS 7 模态视图使按钮变灰(禁用)

    我正在将应用程序升级到 iOS 7 但遇到了一个问题 在显示模式视图后所有按钮都变成灰色 但它们仍然是可点击的 它只发生在模态视图中 而不是弹出窗口中 也许是tintColor属性的问题 尝试设置UIView tintColor明确属性
  • configparser 无法在 Python 3.4 中工作,NoSectionError 但在 PyCharm 中工作正常

    我在 PyCharm 4 5 中编写了 Python 3 4 脚本 回购 https github com Djidiouf bbot https github com Djidiouf bbot 其中 我使用了import configp
  • 创建可逆哈希的好方法/函数是什么?

    我需要通过线路传输一些数据 但我不希望该数据是纯文本 我发送的文本需要反转 所以我不能 md5 sha256 etc 对加盐字符串进行编码的好方法是什么 您正在寻找加密 您使用什么语言 您可能有可以使用的内置加密算法 散列的想法是你只能单向
  • Tensorflow r1.0:找不到满足tensorflow要求的版本

    我想在 Windows 上安装适用于 python 的 Tensorflow 1 o 这是我的系统的信息 D gt python version Python 3 5 2 Anaconda 4 2 0 32 bit D gt pip3 ve
  • HTML 5 本地计算机硬件规格

    有没有办法使用 HTML 5 访问本地系统硬件详细信息 我正在专门寻找有关 CPU RAM 磁盘空间 显卡信息 可用浏览器和插件 带有版本信息 的属性 最终 我试图确定是否可以构建一个工具来检查机器运行软件的硬件要求 但不需要在机器上实际安
  • 选择框更改事件中的 setTimeout

    当我在选择框中将 autopostback 设置为 true 时 为什么 onchange 事件中需要 setTimeout 为什么不直接调用 doPostBack onchange javascript setTimeout doPost
  • 清除git本地缓存

    我有一个 Webstorm 项目 我正要提交 但在按下 Git Windows GUI 中的提交按钮之前 我记得我不想提交我的项目 idea文件夹内容 所以我使用了自动生成的网站 gitignores对于某些 IDE 并将其添加到我的 gi
  • Postgres函数在两个表中插入多条记录

    create table public orders orderID serial PRIMARY KEY orderdate timestamp NOT NULL create table public orderdetails orde
  • 使用英特尔 ifort 编译器启用标准输出的缓冲 I/O

    我读过有关使用 ifort 启用缓冲 I O 的英特尔文档 使用 assume buffered io or FORT BUFFERED true 这适用于直接输出到文件 然而 我们有大型应用程序正在写入标准输出 例如write or wr
  • Haxe 中的常量

    如何在 Haxe 中创建公共常量 我只需要旧的模拟const in AS3 public class Hello public static const HEY String hey 在 Haxe 中声明常量的常用方法是使用static a
  • 如何在 Go 中执行文字 *int64 ?

    我有一个结构类型 int64 field type SomeType struct SomeField int64 在我的代码中的某个时刻 我想声明这个的文字 比如说 当我知道该值应该是 0 或指向 0 时 你知道我的意思 instance
  • Universal Analytics 和 Facebook 注册

    我有一个允许通过 Facebook 注册的网站 theneeds com 我们正在开展多项活动 例如在 Facebook 本身上 我们希望正确跟踪不同活动的注册情况 问题出在 Universal Analytics 上 当用户注册 Face
  • 更改 Git 历史记录中的电子邮件地址

    我已经在 git 存储库上工作了一段时间并做了一些提交 我一直在我的 php 文件中使用文档块 包括我的私人电子邮件地址 如下所示 Bla bla bla author Nic lt email protected cdn cgi l em
  • 退出世博会

    我必须从我的 React Native 项目中退出 但我仍然想保留他们的库提供的一些功能 例如通知 是否可以 提前致谢 从 开始SDK33博览会改为根据需要单独安装自己的模块 如果您已经安装并使用了notification模块使用expo
  • Flutter,in_app_purchase 非常难以测试

    在查看了有点差劲的 in app purchase pub dev 文档后 在多次分发测试版本后 我成功地将内部测试 url 发送到测试设备进行下载 然而 当我使用真实设备进入 in app purchase 屏幕时 就会出现应用程序终止对
  • 在通用 lambda 捕获中使用 this 指针

    我有一个问题 Clang 3 6 和 G 5 1 有不同的意见 include