我可以强制 C++11 lambda 通过引用返回吗?

2024-03-17

这不会编译,因为lambda表达式按值返回:

#include <iostream>

class Item
{
public:
    int& f(){return data_;}
private:
    int data_ = 0;
};

int main()
{
    Item item;
    auto lambda = [](Item& item){return item.f();};
    lambda(item) = 42;  // lambda(item) is a rvalue => compile time error 
    std::cout << item.f() << std::endl;
    return 0;
}

有没有解决的办法?我可以强制 lambda 返回吗引用?


您应该将 lambda 返回类型指定为int&。如果您将返回类型保留为关闭 [并且 lambda 的形式为return expression;它会自动推断出返回类型。

#include <iostream>

class Item
{
public:
    int& f(){return data_;}
private:
    int data_ = 0;
};

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

我可以强制 C++11 lambda 通过引用返回吗? 的相关文章

  • 将 new 与 decltype 一起使用

    T t T is an implementation detail t new T want to avoid naming T to allow for flexibility t new decltype t error cannot
  • Poco c++Net:Http 从响应中获取标头

    我使用 POCO C Net 库进行 http 我想尝试制定持久缓存策略 首先 我认为我需要从缓存标头中获取过期时间 并与缓存值进行交叉检查 如果我错了 请告诉我 那么我如何从中提取缓存头httpResponse 我已经看到你可以用 Jav
  • 单元测试验证失败

    我正在运行我的单元测试PostMyModel路线 然而 在PostMyModel 我用的是线Validate
  • 在 Java 中创建 T 的新实例

    在C 中 我们可以定义一个泛型class A
  • 删除是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 C 编程 free 如何知道要释放多少 https stackoverflow com questions 1518711 c programming how does free know how m
  • 在开关中使用“goto”?

    我看到了一个建议的编码标准 内容如下Never use goto unless in a switch statement fall through 我不跟 这个 例外 案例到底是什么样的 这证明了goto 此构造在 C 中是非法的 swi
  • Gwan C#,如何获取HTTP标头?

    我需要它来重写 url 以了解我正在处理哪个友好的 url 用于用户代理和其他东西 EDIT public class Gwan MethodImplAttribute MethodImplOptions InternalCall exte
  • 将表(行)与 OpenXML SDK 2.5 保持在一起

    我想在 Word 文档中生成多个表 每行 2 行 但我想将这两行保留在一起 如果可能的话 new KeepNext 第一行不起作用 new KeepNext 第一行的最后一段不起作用 new CantSplit 放在桌子上不起作用 在所有情
  • 从BackgroundWorker线程更新图像UI属性

    在我正在编写的 WPF 应用程序中 我有一个 TransformedBitmap 属性 该属性绑定到 UI 上的 Image 对象 每当我更改此属性时 图像就会更新 因此显示在屏幕上的图像也会更新 为了防止在检索下一张图像时 UI 冻结或变
  • Linux mremap 不释放旧映射?

    我需要一种方法将页面从一个虚拟地址范围复制到另一个虚拟地址范围 而无需实际复制数据 范围很大 延迟很重要 mremap 可以做到这一点 但问题是它也会删除旧的映射 由于我需要在多线程环境中执行此操作 因此我需要旧映射能够同时使用 因此稍后当
  • 在 OpenGL 中渲染纹理 1 到 1

    所以我想做的是使用 OpenGL 和 C 将纹理渲染到平面上 作为显示图像的一种方式 但是我需要确保在渲染纹理时没有对纹理进行任何处理 抗锯齿 插值 平滑 模糊等 这是 OpenGL 处理渲染纹理的默认方式吗 或者是否需要设置一些标志才能禁
  • 选择查询不适用于使用Parameters.AddWithValue 的参数

    C 中的以下查询不起作用 但我看不出问题所在 string Getquery select from user tbl where emp id emp id and birthdate birthdate cmdR Parameters
  • CUDA 8 编译错误 -std=gnu++11

    我正在尝试转换一些代码以使用 CUDA 并且我认为我遇到了兼容性问题 我们使用CMake 这些是我使用的 gcc 和 CUDA 版本 gcc version gcc Ubuntu 5 4 0 6ubuntu1 16 04 5 5 4 0 2
  • 在 C#.NET 中安全删除文件

    在我正在做的一个项目中 我想为用户提供 安全 删除文件的选项 例如 用随机位或 0 覆盖它 在 C NET 中是否有一种简单的方法可以做到这一点 效果如何 你可以调用系统内部删除 http technet microsoft com en
  • 如何调试 .NET 运行时中的内部错误?

    我正在尝试调试一些处理大文件的工作 代码本身works 但 NET 运行时本身会报告零星错误 对于上下文 这里的处理是一个 1 5GB 文件 仅加载到内存中一次 在循环中处理和释放 故意尝试重现此否则不可预测的错误 我的测试片段基本上是 t
  • 为什么以下 C 程序会出现总线错误?

    我认为这是第一个失败的 strtok 调用 好久没写C了 有点不知所措 非常感谢 include
  • LINQ 中的“from..where”或“FirstOrDefault”

    传统上 当我尝试从数据库中获取用户的数据时 我使用了以下方法 在某种程度上 DbUsers curUser context DbUsers FirstOrDefault x gt x u LoginName id string name c
  • INotifyPropertyChanged 和 propertyName

    我一直不确定它的含义propertyName实施时INotifyPropertyChanged 所以一般来说你实现INotifyPropertyChanged as public class Data INotifyPropertyChan
  • 结构化绑定的用例有哪些?

    C 17 标准引入了新的结构化绑定 http en cppreference com w cpp language structured binding功能 最初是proposed http www open std org jtc1 sc
  • 使用未分配的局部变量

    我遇到了一个错误 尽管声明了变量 failturetext 和 userName 错误仍然出现 谁能帮帮我吗 Use of Unassigned local variable FailureText Use of Unassigned lo

随机推荐

  • 有一个用于反应本机选择器的占位符

    有没有办法在用户单击它之前显示反应本机选择器的占位符 我们的想法是有一个选择器显示 国籍 一旦您单击并选择您的国家 地区 它就会呈现该国家 地区 我想在不将 国籍 作为选择器中的可用选项的情况下执行此操作 将第一个孩子放置为
  • 在 WooCommerce 中的简短描述之前显示自定义产品字段

    在简短描述之前 我在 WooCommerce 中添加新字段时遇到问题 我在中使用了脚本functions php我的新自定义字段显示正确 但是 使用脚本时简短描述消失 新字段显示正常 我可以编辑产品页面上字段的内容 但无法删除它 它始终是最
  • Ubuntu 10.1下如何识别多个USB串口适配器

    我正在 Ubuntu 10 1 下从多个相同的 USB 串行适配器读取数据 有时 它们的 dev tty 路径会发生变化 例如 如果在启动时连接了其他 USB 设备 我需要一种通过任何此类更改重复引用同一适配器的方法 据 udevadm 称
  • XInclude 的替代方案

    据我所知没有支持XInclude在 net中 我想利用同样的机制来分层组织 XML 配置文件 我的意思是我有一个引用特定 Xml 文件的顶级 XML 配置文件 我的配置是专用于一个特定模块的一组配置 我该怎么办呢 或者也许为什么我不应该这样
  • 如何在 Azure DevOps 中为 Node.js Web 应用创建发布管道?

    我想通过创建发布管道 在 Azure DevOps 上启用 Node js 应用程序的持续部署 我怎样才能做到这一点 当我写一年前的答案时 Azure DevOps 没有用于构建管道的 Web 应用程序部署任务 因此必须使用发布管道来完成
  • Rebol 中的“reword”功能是什么以及如何使用它?

    我看到有人提到reword今天可以使用 但是它的文档非常简短 它看起来像 shell 脚本环境变量替换 或者可能是正则表达式替换 但有所不同 我该如何使用这个功能以及我会遇到什么样的问题 这里有龙 The rewordfunction 是一
  • 限制 top 命令仅在命令行上显示前 X 个进程 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我不确定为什么没有选项top命令执行此操作 因为这似乎是一个自然的请求 如果我通过管道输出top to head 然后列表不会更新 并且我
  • 在 Twitter 上分享时 GIF 没有动画

    我正在创建动画 GIF 文件NSArray of UIImage 并将其保存在NSDocumentDirectory以及 iPhone 相册中 我面临的问题是 当我在电子邮件编辑器或 iMessage 中打开保存的 GIF 时 它的动画效果
  • 'str = new String(bytes, "UTF8") ' 和 'bytes = str.getBytes("UTF8")' 中的字节值不同

    我可以看到它们与我创建字符串所用的字节不同 我使用 AES CBC PKCS5Padding 来获取字符串 public static void main String args try int randomNumber CNStation
  • python-qgis版本信息

    有人可以告诉我如何获取版本信息python qgis http docs qgis org testing en docs pyqgis developer cookbook intro html 我已经尝试了所有常规方法foo versi
  • 在 Heroku 上部署 PeerJS 服务器

    我的 PeerJS 服务器有问题 我从这里使用了 部署到 Heroku 按钮 https github com peers peerjs server https github com peers peerjs server 我不知道如何连
  • 如何在Python中导入matplotlib

    我是Python新手 正在研究一个图形问题 我想绘制这个图形以更好地理解它 我了解到应该为此导入 matplotlib 模块 但我不知道如何将其添加到项目中 我是一名 java 开发人员 这非常类似于将 jar 添加到类路径中 当我尝试做时
  • Log4j2 模拟 Appender

    我有一堂课 其中我获取了所有属性 并在登录之前隐藏了它们的密码 Override public void afterPropertiesSet throws Exception Properties loadedProperties thi
  • 如何在 UML 类图中表示回调

    我有一个界面说 Interface ICallback public void informFunction 我有一堂课说 Class Implementation implements ICallback public Implement
  • Chart.js 混合图表的工具提示悬停自定义

    我在尝试使用 Chart js 自定义混合图表的悬停工具提示时遇到了一些问题 我有一个条形图显示某种产品的总利润 还有一个折线图显示该某种产品的总量 当我将鼠标悬停在条形图上时 我希望工具提示显示如下内容 Total profit 1399
  • 垃圾收集器会为我调用 IDisposable.Dispose 吗?

    互联网I一次性图案 http msdn microsoft com en us library system idisposable aspx implies如果您编写一个终结器并实现 IDisposable 则您的终结器需要显式调用 Di
  • 我如何在 chrome Extension(manifest V3) 的服务工作者中包含 socket.io-client

    我从 cdn 复制了客户端 socket io 脚本 然后使用 importScript 但是当我真正运行时它给出了 ReferenceError document is not defined at JSONPPolling doPoll
  • 从序言中的列表中过滤掉大量数字

    我想编写一个函数 通过删除所有小于或等于特定数字的内容来过滤数字列表 该函数将采用两个参数 数字列表和要过滤的数字 该函数应返回一个列表 其中包含大于过滤器编号的所有数字 有时像这样 filter num list L1 N L2 test
  • 如何解决 tls: 无法验证证书: x509: 在 Windows 中构建 go dockerfile 时由未知机构签名的证书

    我有以下 dockerfile 当我尝试运行 docker build 时 出现错误 docker文件 base go image FROM golang latest as builder RUN mkdir app COPY app W
  • 我可以强制 C++11 lambda 通过引用返回吗?

    这不会编译 因为lambda表达式按值返回 include