非捕获通用 lambda 是否应该衰减为函数指针?

2024-01-25

考虑以下代码:

int main() {
    auto l = [](auto){};
    void(*p)(int) = l;
}

两者都可以很好地工作GCC https://godbolt.org/g/wSibNo and clang https://godbolt.org/g/OUnVqp.
让我们考虑以下稍微修改的版本:

int main() {
    auto l = [](auto...){};
    void(*p)(int) = l;
}

在这种情况下,clang仍然接受它 https://godbolt.org/g/keWVhw而海湾合作委员会拒绝它 https://godbolt.org/g/eQP5yd.

是否有任何原因应该拒绝此代码,或者它是编译器的错误?


我要提出一个问题,但我想知道是否存在任何提案可以由其中一个而不是另一个实施。


这是一个已知的 GCC 解析错误(64095 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64095, 68071 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68071): [](auto...){}被错误地解析为[](auto, ...) {}而不是[](auto...x){};省略号被解析为 C 风格的可变参数,而不是声明一个参数包(用语言律师的术语来说,它被解析为参数声明子句而不是抽象声明符,违反[dcl.fct]/17 https://timsong-cpp.github.io/cppwp/dcl.fct#17).

不言而喻[](auto, ...){}不能转换为void (*)(int).

解决方法是给包命名;如果这样做,您将看到转换编译成功。

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

非捕获通用 lambda 是否应该衰减为函数指针? 的相关文章

  • 添加 Nullable int 时保持 null?

    我想添加可为空的int 并保留null当所有值都是null 我想要这个结果 1 2 3 1 null 1 null null null O null 0 问题是 如果我将一个值与 null 相加 结果为 null int i1 1 int
  • 将 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
  • 您可以从基本 Win32 控制台模板应用程序中的 C#/Winrt 组件调用(不是 WinForm/abstractions/wrappers 或使用 C++/Winrt 模板)吗?)

    我有一个现有的程序 win32 x86 控制台应用程序 需要调用托管代码 来自 Net 的 C dll The dll不暴露给 COM 但可以从 C WinRT 组件调用并由 C WinRT 控制台模板应用引用 BUT即使安装了 C Win
  • Poco c++Net:Http 从响应中获取标头

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

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有很多用 C 编写的库 我想从 C 调用这些库 但是 我遇到了很多问题 我想知道是否有书籍或指南告诉我如何做到这一点 Dll导入 htt
  • 检测到堆栈崩溃

    我正在执行我的 a out 文件 执行后 程序运行一段时间 然后退出并显示消息 stack smashing detected a out terminated Backtrace lib tls i686 cmov libc so 6 f
  • Gwan C#,如何获取HTTP标头?

    我需要它来重写 url 以了解我正在处理哪个友好的 url 用于用户代理和其他东西 EDIT public class Gwan MethodImplAttribute MethodImplOptions InternalCall exte
  • 访问 ascx 文件中的母版页控件

    我有一个母版页文件 其中包含 2 个面板控件中的 2 个菜单 我还使用控件来检查用户是否登录并获取用户类型 根据我想要显示 隐藏面板的类型 控件本身不在母版页中引用 而是通过 CMS 系统动态引用 我想在用户控件中使用findcontrol
  • C# 编译器不会优化不必要的强制转换

    前几天 在写答案的时候这个问题 https stackoverflow com questions 2208315 why is any slower than contains在这里 关于溢出 我对 C 编译器感到有点惊讶 它没有按照我的
  • 根据对象变量搜索对象列表

    我有一个对象列表 这些对象具有三个变量 ID 名称和值 这个列表中可能有很多对象 我需要根据ID或Name找到一个对象 并更改值 例子 class objec public string Name public int UID public
  • 使用 C# 和 wpf 创建类似 Dock 的应用程序

    我需要创建一个与我们购买笔记本电脑时获得的应用程序类似的应用程序 仅当鼠标指针到达窗口顶部时它才可见 那么我怎样才能使用 C 4 0 来做到这一点呢 http www notebookcheck net uploads pics win2
  • 在 asp.net MVC 中使用活动目录进行身份验证

    我想使用活动目录对我的 asp net mvc 项目中的用户进行身份验证 在网上冲浪了几个小时后 我没有找到任何对我有用的东西 我已经看到了所有结果 但什么也没有 我尝试按照许多帖子的建议编辑我的 web config 如果有人可以帮助我提
  • 引用/指针失效到底是什么?

    我找不到任何定义指针 引用无效在标准中 我问这个问题是因为我刚刚发现 C 11 禁止字符串的写时复制 COW 据我了解 如果应用了 COW 那么p仍然是一个有效的指针并且r以下命令后的有效参考 std string s abc std st
  • 如何使用 NPOI 按地址(A1、A2)获取 Excel 单元格值

    我有一个 Excel 单元格地址 例如 A1 A2 如何使用 C 中的 NPOI 框架以编程方式访问此单元格 我找到的一些 Java POI 示例代码 CellReference cr new CellReference A1 row my
  • Project Euler #8,我不明白我哪里出了问题[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在做项目欧拉第八题 https projecteuler net problem 8 其中我得到了这个大得离谱的数字 7316
  • ASP.NET MVC 路由:如何从 URL 中省略“索引”

    我有一个名为 StuffController 的控制器 具有无参数索引操作 我希望从表单中的 URL 调用此操作mysite com stuff 我的控制器定义为 public class StuffController BaseContr
  • 为什么以下 C 程序会出现总线错误?

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

    传统上 当我尝试从数据库中获取用户的数据时 我使用了以下方法 在某种程度上 DbUsers curUser context DbUsers FirstOrDefault x gt x u LoginName id string name c
  • 结构化绑定的用例有哪些?

    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

随机推荐

  • C++:最大整数[重复]

    这个问题在这里已经有答案了 是否有一个 C 跨平台库为我提供可移植的最大整数 我想声明 const int MAX NUM call some library here 我使用 MSVC 2008 非托管 在C 标准库头文件中
  • 无法在 ASP.Net vNext 项目中使用会话

    我有一个使用 Session 的 ASP Net vNext 项目 但是我在尝试在会话中获取 设置值时收到此错误 Microsoft AspNet Http Core dll 中发生 System InvalidOperationExcep
  • 将图像添加到 jar 中

    我想为我的 JFrame 设置图标 我执行以下操作 Image icon Toolkit getDefaultToolkit getImage src images icon jpg this setIconImage icon 当我从 n
  • 从 C 静态库中删除内部符号

    我正在研究一些作为静态库提供的嵌入式代码 我们希望从库中删除所有内部符号 只保留 API 符号可见 这是我们想要做的一个示例 假设您有一个名为internal c和一个叫api c看起来像这样 internal c int fibonacc
  • 检查文件是否存在 Objective-C

    我使用下面的代码来检查文件是否存在 bool b NSFileManager defaultManager fileExistsAtPath filePath 这些代码可以在 IOS 上运行 但是当我将它迁移到 mac os x 时 但我通
  • 是否有关于如何命名资源的约定?

    Android 中是否有命名资源的约定 例如 按钮 文本视图 菜单等 Android SDK 将是一个很好的起点 例如 我尝试在活动中确定 ID 的范围 如果我有一个ListView它只是 android id list在所有活动中 但是
  • 将 KeyFilter 与 ASP.NET Core 2.0 结合使用

    我在简单的 ASP NET Core 2 0 WebAPI 应用程序中使用 KeyFilter 属性时遇到问题
  • 使用 ffmpeg 分割成相等的部分并转换许多 mp4 视频

    我有大量视频需要使用 ffmpeg 将 mp4 转换为 wmv 并将每个文件分成 10 分钟的片段 但我是一个 cmd 脚本新手 事实上 我是一个脚本新手 在花了六个小时试图找到答案之后 我想我会把它带给你们 我的代码可以运行一点 但我需要
  • aurelia - 示例,安装依赖项时出错

    我一直在关注 Aurelia 网站上的示例以及以下示例 http aurelia io hub html doc article aurelia framework latest contact manager tutorial 2 htt
  • 使用图像作为 JPanel 和 JButton 的背景

    我正在尝试使用在 Photoshop 中制作的图像作为 GUI 的背景 我怎么做 我还制作了一些图像 我想在执行操作后在按钮背景中显示 对于 JButton 请使用以下命令 JButton button new JButton Button
  • 如何检测/处理弯曲区域上的触摸事件?

    我从一个本机 iPad 应用程序开始 如果需要 我们可以假设 iOS 4 3 我需要有一系列相互碰撞的弯曲区域 我希望得到一些有关处理此问题的最佳方法的建议 我的一个想法是使用 WebView 并且只有一个 JPG 和一个 HTML 图像映
  • rdf:Bag、rdf:Seq 和 rdf:Alt 在使用时有何不同?

    我正在读RDF 模式 1 1 http www w3 org TR rdf schema ch bag建议 其中包括以下内容 强调是后加的 5 1 2 rdf 袋子 http www w3 org TR rdf schema ch bag
  • 机器人可以到达点 (x, y) 吗?

    我在一次求职面试中遇到了这个问题 我无法找到解决方案的正确算法 所以我在这里发布这个问题 有一个机器人可以通过以下两种方式在坐标平面上移动 假设机器人当前位置为 x y 如果方向如下 则机器人可以移动等于 x 和 y 之和的距离 x y g
  • mp3 的

    首先这是我当前正在编码的网站 http www clairereviens com http www clairereviens com 每个按钮上都有一个 mp3 样本的标签 所有 mp3 在 Safari 中都能完美播放 但在 Chro
  • Jenkinsfile windows cmd输出变量参考

    我对 groovy 还很陌生 在我的Jenkinsfile我试图将 Windows cmd 输出存储在变量中 在下一个命令中使用它 但似乎没有任何效果 这是我得到的最接近的 pipeline agent any stages stage p
  • UTF16(例如 Wide-winapi 函数使用的)字符是否始终为 2 字节长?

    请帮我解释一下 UTF16 是如何工作的 考虑到以下几点 我有点困惑 There is a static type in C WCHAR which is 2 bytes long always 2 bytes long obvisouly
  • 将 SVG 转换为 PNG 并调整其大小

    我正在尝试将 SVG 转换为 PNG 或任何光栅格式 并同时调整大小 我以为我会使用 ImageMagick 来完成此任务 但它似乎在调整大小之前转换为光栅 这会导致图像质量较差 有没有办法让 ImageMagick 在转换为光栅之前调整
  • 手臂;内联汇编;使用暂存寄存器;

    内联汇编程序存在一些我无法理解的问题 我有一个带有内联汇编器的函数 在 ASM 块内部 我需要使用一些暂存寄存器来修改一些系统值 void setHW uint32 t val asm volatile mrc 15 0 r0 orr r0
  • 错误字符串编码(Windows 10 + Visual Studio 2015 + Net 4.6)

    My code Keys new Dictionary
  • 非捕获通用 lambda 是否应该衰减为函数指针?

    考虑以下代码 int main auto l auto void p int l 两者都可以很好地工作GCC https godbolt org g wSibNo and clang https godbolt org g OUnVqp 让