GCC 接受 `constexpr struct {} s;`,但 Clang 拒绝它。谁是正确的?

2023-12-20

以下代码可以使用 GCC 正常编译:

constexpr struct {} s;

但 Clang 拒绝了它,并出现以下错误:

错误:默认初始化 const 类型“const struct (anonymous struct at ...)”对象,而没有用户提供的默认构造函数

我已经测试了我能找到的所有版本的 GCC 和 Clanghttps://gcc.godbolt.org/ https://gcc.godbolt.org/。每个版本的 GCC 都接受该代码,每个版本的 Clang 都拒绝它。

我想知道在这种情况下哪个编译器是正确的?
标准对此有何规定?


Clang 遵循以下段落:[dcl.init]/7 http://eel.is/c++draft/dcl.init#7:

如果程序调用 const 限定类型的对象的默认初始化T, T应是具有用户提供的默认构造函数的类类型。

This wording is defective https://cplusplus.github.io/CWG/issues/253.html and hence ignored by GCC https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57820#c5 (and, as of v3.9, also by Clang http://melpon.org/wandbox/permlink/Ed7vbGe0UTO1c9sz).
The above quote differs from core issue 253's due to N2762 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2762.htm moving/adjusting paragraph 9 as cited.

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

GCC 接受 `constexpr struct {} s;`,但 Clang 拒绝它。谁是正确的? 的相关文章

  • 为什么这个 Web api 控制器不并发?

    我有一个 Web API 控制器 里面有以下方法 public string Tester Thread Sleep 2000 return OK 当我调用它 10 次 使用 Fiddler 时 我预计所有 10 次调用都会在大约 2 秒后
  • 尝试了解使用服务打开对话框

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

    In 本教程 https emscripten org docs porting connecting cpp and javascript Interacting with code html interacting with code
  • 将类对象放置在向量中?

    我注意到我可以将一个类放置在一个向量中 这是我的程序 我收到以下错误 out blackjack exe blackjack obj blackjack obj error LNK2019 unresolved external symbo
  • Environment.CurrentDirectory 与 System.IO.Directory.GetCurrentDirectory

    我正在编写一个 Net WinForms 并不断在调试和发布配置之间切换 并且有一些文件我需要任一配置才能访问 我想做的是将文件放在 BIN 文件夹中的公共目录中 这样它看起来像这样 MyProject Bin CommonFiles My
  • 前向声明类型和“已声明为类类型的非类类型”

    我对以下代码有问题 template
  • MVC3中设置下拉列表中的所选项目

    我必须为视图中的下拉列表设置所选项目 但它不起作用 View div class editor label Html LabelFor model gt model Gender div div class editor field Htm
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • java中如何重新初始化int数组

    class PassingRefByVal static void Change int pArray pArray 0 888 This change affects the original element pArray new int
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 如何在 C# Designer.cs 代码中使用常量字符串?

    如何在 designer cs 文件中引用常量字符串 一个直接的答案是在我的 cs 文件中创建一个私有字符串变量 然后编辑 Designer cs 文件以使用此变量 而不是对字符串进行硬编码 但设计者不喜欢这样抛出错误 我明白为什么这行不通
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 已发布的 .Net Core 应用程序警告安装 .Net Core,但它已安装

    我制作了一个 WPF 和控制台应用程序 供某人在我无法访问的私人服务器上使用 我使用 Visual Studio 2019 的内置 发布向导 来创建依赖于框架的单文件应用程序 当该人打开 WPF 应用程序时 他们会看到标准警告 他们单击 是
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • 在 C# 中为父窗体中的子窗体控件添加事件处理程序

    我有两种形式 一种是带有按钮和文本框的父表单 单击该按钮时 将打开一个对话框 该子窗体又包含一个文本框和一个按钮 现在我想要的是 每当子表单文本框中的文本更改时 父表单文本框中的文本会自动更改 为了获得这个 我所做的是 Form3 f3 n
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

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

随机推荐

  • 更改 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
  • Linux环境下的C#

    我目前在 Unix 环境中使用 C C 工作 并且是 Linux 环境的新手 我想了解 Linux 操作系统并学习 C 作为我职业生涯的下一个级别的编程语言 我决定在我的笔记本电脑上安装 Ubuntu Linux 但我不确定我们是否可以在L
  • 如何使用JS检测用户与phonegap的触摸

    我正在使用phonegap 来构建Android 应用程序 我想检测用户的触摸事件 以便弹出警报 但是 如何从 javascript 调用 ontouch 事件呢 Thanks 下面是一个示例 显示touchstart and touche
  • kaptGenerateStubsDebugKotlin FAILED e:无法加载模块 <错误模块> - Android Studio 项目

    当我尝试构建项目时出现此错误 我的编译器没有任何错误 源代码 https github com KarolCieslar WyjazdyOSP tree firebase https github com KarolCieslar Wyja
  • .NET 4.5 中 List.Sort 的行为与 .NET 4.0 相比有何变化?

    我在针对 NET 4 0 的项目中进行了以下测试 TestFixture public class Donkey Test public void TestListSorting var expected new MockRepositor
  • 使用 webpack 导入 vis.js

    我想进口only DataSet and Network from vis js在我们的 Webpack 应用程序中使用 ES6 模块 一种简单的方法就是导入dist vis network min js但它已经缩小了 所以与我们的 web
  • JavaScript解析字符串和对象的引用[重复]

    这个问题在这里已经有答案了 是否可以通过对象本身获取对象的引用 obj 以及字符串形式的属性 地址 城镇 街道 所以最后它解决了 obj 地址 城镇 街道 我可以想象 eval 函数 Try function getValue obj pa
  • Echo 将我的制表符更改为空格

    我将来自网络的以下结构作为如何在 BASH 中读取文件的基本示例 cat inputfile txt while read line do echo line done 不过 我的 inputfile txt 是制表符分隔的 并且上述命令中
  • 何时索引、在 Mongoid 中索引什么?

    我对索引有点陌生 但我对索引的用例很好奇 我认为它使对索引字段的查询速度更快 是否有确定索引内容和何时索引的标准 我应该期望获得什么样的性能优势 特别是在 Rails 应用程序上将 Mongoid 与 MongoDb 结合使用 查看Inde
  • 如何停止 goroutine [重复]

    这个问题在这里已经有答案了 我有一个调用函数的 goroutine 并且有一个特殊参数 我想启动或停止这个 goroutine 我的问题是这段代码永远不会停止我的 goroutine 它每次都会创建一个新作业 quit make chan
  • TextView Marquee 不起作用[重复]

    这个问题在这里已经有答案了 我尝试过使用选框但不起作用 这是我的代码 请让我知道哪里出了问题
  • 单击标记时,Google 地图 v3 打开最后一个信息窗口

    我有一个共享的infoWindow对于我所有的标记 如果我使用 jquery 的话效果很好 each function 但是如果我将其更改为 JavaScrips 的本机 for 或 while 循环 则它不会按预期工作 每当我单击一个标记
  • 为什么它返回一个随机值而不是我给函数的值?

    在C程序中 有一个交换函数 该函数采用一个名为x的参数 我希望它通过更改主函数内交换函数中的x值来返回它 当我将参数视为变量时 我想要它 但是当我直接为参数设置整数值时 程序会产生随机输出 include
  • 与 Nodejs Express 共享 Laravel 4 会话

    我正在尝试从 NodeJS 上标头的 Cookie 中获取 Laravel 会话 ID 到目前为止我已经尝试过 function nodeDecrypt data key iv var decipher crypto createDecip
  • 使用 CQL 3.0 在集合上创建自定义索引

    我一直在关注CQL 3 0数据建模文档 http www datastax com documentation cql 3 0 webhelp cql ddl ddl anatomy table c html concept ds qqw
  • 禁用数据库访问

    我创建了一个 MySQL 服务器 现在用户login可以访问所有数据库 我希望该用户无法访问 因此无法执行任何操作 3 个数据库 information schema mysql phpmyadmin 所以用户可以使用除这 3 个之外的所有
  • GCC 接受 `constexpr struct {} s;`,但 Clang 拒绝它。谁是正确的?

    以下代码可以使用 GCC 正常编译 constexpr struct s 但 Clang 拒绝了它 并出现以下错误 错误 默认初始化 const 类型 const struct anonymous struct at 对象 而没有用户提供的