lambda 函数可以模板化吗?

2023-12-06

在 C++11 中,有没有办法模板化 lambda 函数?或者它本身就太具体而无法模板化?

我知道我可以定义一个经典的模板化类/函子,但问题更像是:该语言是否允许模板化 lambda 函数?


2018 年更新:C++20 将附带模板化和概念化的 lambda。该功能已经集成到标准草案中。


2014 年更新:C++14 已于今年发布,现在提供与本示例中语法相同的多态 lambda。一些主要的编译器已经实现了它。


遗憾的是,就目前情况(C++11 中)而言,答案是否定的。多态 lambda 在灵活性和功能方面非常出色。

它们最终成为单态的最初原因是因为概念。概念使此代码情况变得困难:

template <Constraint T>
void foo(T x)
{
    auto bar = [](auto x){}; // imaginary syntax
}

在受约束模板中,您只能调用其他受约束模板。 (否则无法检查约束。)可以foo invoke bar(x)? lambda 有哪些约束(毕竟它的参数只是一个模板)?

概念还没有准备好解决这类问题;它需要更多的东西,比如late_check(在调用之前不会检查概念)之类的东西。更简单的方法就是放弃一切并坚持使用单态 lambda。

然而,随着 C++0x 中概念的删除,多态 lambda 再次成为一个简单的命题。但是,我找不到任何建议。 :(

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

lambda 函数可以模板化吗? 的相关文章

随机推荐

  • Windows Phone 8 设备作为感应门禁卡

    Lumia 920 中的 NFC 硬件可以模拟 125 kHz 感应卡吗 看起来 NFC 硬件实现的标准是门禁卡使用的标准的超集 但我对这些无线电标准没有足够的了解 无法理解手机是否只能作为此类信号的接收器或发射器 我还希望获得一篇很好的概
  • 从文件中读取数字C++

    我想从文本文件中读取数字 该文件包含以下数字 3 5 7 9 20 25 30 40 55 56 57 60 62 1 4 7 11 14 25 44 47 55 57 100 5 100 1000 1005 12 1000 1001 空格
  • 在 Node.js 中同时生成的发票具有相同的编号。如何实现独特性?

    在我的 Node js 应用程序中 我想启用生成带有发票的 PDF 的功能 一切都很顺利 直到两个或更多人同时 在不同的机器上 生成发票 然后 系统会提示他们提供具有相同编号的不同发票 例如发票号码 355 这是将发票保存到MySQL的方法
  • 无法编译 yesod,hGetContents 参数无效

    我正在尝试创建 Yesod 项目 但无法退出1st step 以下是我初始化和构建的步骤 stack new someproj yesodweb postgres cd someproj stack build 我没有做任何额外的编码 只是
  • 解析 R 脚本中的命令行参数

    有没有方便的方法来自动解析传递给 R 脚本的命令行参数 类似perl的东西Getopt Long CRAN上有3个包 getopt 类似 C 的 getopt 行为 optparse 受 Python 启发的命令行解析器optparse l
  • 如何在变量中取加号

    我想计算两个数字 这很简单 但是有什么办法可以将运算符放入变量中然后进行计算吗 var x 5 var y 5 var p var z x p y button click function alert z div class button
  • C++ 循环中向量::size() 的性能问题

    在下面的代码中 std vector
  • 覆盖默认的 Java 外观

    我想覆盖 java 的外观和感觉 我只是想以不同的方式显示按钮 我想要 Windows 外观和感觉的所有功能 但只是按钮不同 我希望你明白我的意思 Color color new Color 220 220 220 200 UIManage
  • 为什么调用字符串方法(例如 .replace 或 .strip)不会修改(变异)字符串?

    我尝试使用此代码进行简单的字符串替换 X hello world X replace hello goodbye 为什么不X改变 从 hello world to goodbye world 这是因为Python 中的字符串是不可变的 意思
  • 在 clustermap 上为等于零的值设置特定颜色

    我想在使用seaborn 进行聚类图的图形输出方面获得一些帮助 在我的数据中 我缺少转换为 0 的数据 我想为等于零的值设置白色 为其余值设置调色板 有没有办法在cmap中指出它 import pandas as pd from rando
  • 使用 JavaScript 检测时区缩写

    我需要一种方法来检测给定日期对象的时区 我不需要偏移量 也不想要完整的时区名称 我需要获取时区缩写 例如 GMT UTC PST MST CST EST 等 这可能吗 我得到的最接近的是解析结果date toString 但即使这样也不会给
  • 如何使用Microsoft Graph API获取Office365邮件的MIME内容?

    如何使用 Microsoft Graph API 获取 Office365 邮件的 MIME 内容以便我可以创建 EML 文件 或者是否有其他方法可以使用 Microsoft graph API 创建 Office365 中找到的邮件的 E
  • 从 HttpListener 解析 POST 参数

    假设我有 HttpListener 它监听一些端口和IP 当我发送 POST 请求时 它会捕获它 如何从 HttpListenerRequest 解析 POST 参数 HttpListenerContext context listener
  • VBScript 创建一个多维数组并添加到它?

    这对我来说太棒了哈哈 我几乎检查了谷歌搜索上的每个页面 但我仍然不明白该怎么做 我想在 VB 脚本中创建一个名为 data2 的多维数组 尝试我见过的示例 但出现 下标超出范围 错误 Dim data2 sub grabdata SQL q
  • 在 C# 中使用不同的用户凭据将文件保存到文件系统

    如何使用与当前登录用户不同的用户将文件保存到文件系统 我目前正在使用 NET Framework 4 0 如果您有其他用户的登录凭据 您可以冒充他们 使用 DLL Import 在 Win32 中调用 LogonUser DllImport
  • 安装 Apple 的网络链接调节器工具

    我已经在运行 Lion 的机器上安装了 xcode 4 3 1 我在任何地方都找不到网络链接调节器工具 我已经检查了实用程序文件夹 还有xcode contents developer 目录 没有这样的运气 我是否需要安装特定组件或者该工具
  • CodeIgniter - 声明全局变量的最佳位置

    我只想用一个 variable在几个地方 不仅是视图和控制器 而且在routes php和其他配置文件 我不想要这样的事情 使用 Config 类加载配置文件 使用 CIget instance等等 我只想声明一个给定的 variable
  • 有没有简单的方法在 Windows 版 xampp 中安装 SSH?

    有没有简单的方法在 Windows 版 xampp 中安装 SSH 我不相信是这样 即使可以 您也无法像在 nix 机器上所期望的那样无缝访问 apache 和 mysql 如果你已经死心了 最好的选择就是安装 openssh 服务器 ht
  • 在 Next.js 中将回调从服务器组件传递到客户端组件

    我陷入了创建自定义按钮组件 将其标记为客户端组件 然后传递其onClick来自服务器端组件的回调 它给了我这个错误 error Error Event handlers cannot be passed to Client Componen
  • lambda 函数可以模板化吗?

    在 C 11 中 有没有办法模板化 lambda 函数 或者它本身就太具体而无法模板化 我知道我可以定义一个经典的模板化类 函子 但问题更像是 该语言是否允许模板化 lambda 函数 2018 年更新 C 20 将附带模板化和概念化的 l