带有auto的initializer_list包含多个表达式

2024-03-23

相当简单的问题,

auto x11 {1,2,3,4};
auto x1 = {1,2,3,4};
auto x22 {1.0, 2.25, 3.5};
auto x2 = {1.0, 2.25, 3.5};

据我了解,这里应该没有什么区别=或不。但是,使用 llvm/clang 6.0.0 (使用 --std=c++17),我得到:

main1.cpp:35:17: error: initializer for variable 'x11' with type 'auto' contains multiple
  expressions
auto x11 {1,2,3,4};
~~~~~~~~    ^

main1.cpp:37:20: error: initializer for variable 'x22' with type 'auto' contains multiple
  expressions
auto x22 {1.0, 2.25, 3.5};

来自 Stroustroup 的 C++ 书,第 162 页:

auto x1 {1,2,3,4}; // x1 is an initializer_list<int>
auto x2 {1.0, 2.25, 3.5 }; // x2 is an initializer_list of<double>

那么,不这样做真的有问题吗?=在那里?


的规则自动类型推导 https://en.cppreference.com/w/cpp/language/template_argument_deduction#auto_type_deduction自从改变N3922 http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n3922.html。 (这被认为是 C++14 中的缺陷)。

在直接列表初始化中(但不在复制列表初始化中), 当从花括号初始化列表中推导出 auto 的含义时, braced-init-list 必须仅包含一个元素,且类型为 auto 将是该元素的类型:

auto x1 = {3}; // x1 is std::initializer_list<int>
auto x2{1, 2}; // error: not a single element
auto x3{3};    // x3 is int
               // (before N3922 x2 and x3 were both std::initializer_list<int>)

所以在 N3922 之前,样本中的所有变量都工作正常并且具有类型std::initializer_list<int>。但从 N3922 开始,对于直接初始化(即对于x11 and x22)大括号初始化器必须仅包含一个元素(并且它们的类型将是该元素的类型),那么代码就会变得格式错误。

See N3922 http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n3922.html and N3681 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3681.html了解更多。

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

带有auto的initializer_list包含多个表达式 的相关文章

随机推荐

  • 移动提供商无法进行 UDP 打洞

    实际上 我正在编写一个 Android 应用程序 该应用程序接收连接到 PC 的网络摄像头的图片 为了获得更多的 fps 我使用 udp 协议而不是 tcp 这个想法是 电脑将图片发送到手机的 IP 和端口 但电话提供商有不同的公共端口 所
  • 在 iOS 中检索通过蓝牙连接的配对设备

    我已连接条形码扫描仪设备 条码扫描仪信息 http www barcodedatalink com pages product details php p 108 我想知道它的配对状态 是否与设备连接 void centralManager
  • Django 使用 ManytoMany 作为外键

    我正在尝试使用多对多关系作为另一个表的外键 但我不确定这是否可能 考虑以下模型 from django db import models class Attribute models Model name models CharField
  • 通过类的java sql连接

    我有以下代码 import java sql import java net public class binsz public void dbConnect String db connect string String username
  • 带数据触发器的 WPF 动画

    我有一个矩形 我正在为其背景颜色设置动画 每次特定数字上升时 它都应该变为绿色 下跌时呈红色 如果数字一段时间内没有变化 它会慢慢淡回默认颜色 因此 动画非常快速地将背景从灰色变为红色 然后需要几秒钟的时间才能淡出回灰色 我已添加为 Dat
  • 如何在 Xcode 4 中从断点操作打印字符串值?

    我有一个断点操作 并且正在使用下拉列表中的 日志 选项 我想打印出字符串 摘要 值 我正在这样做 the person name is p name 但这会打印内存地址 我可以切换到调试器命令选项并执行以下操作 po f name 但后来我
  • 如何创建不安全的 jupyter 服务器

    Jupyter 只允许从本地主机访问 除非我做了一些额外的安全工作 我正在运行我的服务器 以便它只能在本地网络上访问 任何有权访问的人都与本地主机具有相同的可信度 如何设置没有额外安全功能的 jupyter 笔记本服务器 根据您的问题 我希
  • HTML5 视频控件不起作用

    我做了很多研究 尽管有些问题 评论确实为我指明了正确的方向 但我仍然停滞不前 摘要 HTML5 视频显示控件 但无法单击 当你浏览它们时 它们就会消失 您无法单击暂停 播放 静音等任何操作 请帮我弄清楚发生了什么事 该网站是www inno
  • OpenCV 中的 Matlab Conv2 等效项

    我一直在尝试使用 OpenCV 对 2D 矩阵进行卷积 我实际上经历过这段代码http blog timmlinder com 2011 07 opencv equivalent to matlabs conv2 function resp
  • 类似热图的图,但适用于 seaborn 中的分类变量

    同样的问题类似热图的图 但适用于分类变量 https stackoverflow com questions 12998372但使用 python 和 seaborn 而不是 R 假设我有以下数据框 df pd DataFrame John
  • Gecko 清除缓存历史记录和 cookie

    帮助 我用GeckoFx Windows 10 0 0 6对于浏览器和xulrunner 10 0 en US win32 Visual Studio 2010 c 一切正常 但我需要清除 Firefox 中的所有历史记录 工具 gt gt
  • 为什么 OpenMP SIMD 指令会降低性能?

    我正在学习如何在 OpenMP Fortran 中使用 SIMD 指令 我 写了简单的代码 program loop implicit none integer i j real 8 x x 0 0 do i 1 10000 do j 1
  • 将 Spring boot 与 Elasticsearch 集成的最佳方式

    我是 Elasticsearch 的新手 我们正在使用 Elasticsearch 构建 Spring boot 应用程序 目前 我们必须使用 Spring Boot 2 1 3 RELEASE 但我们可以使用最新的稳定 Elastic s
  • ESP8266 NodeMCU 堆内存不足

    我正在尝试通过从我的笔记本电脑发送 POST 使用 node js 来使用 ESP8266 01 来切换 LED 我现在遇到内存问题 因为每当我发送 POST 请求时 ESP 中使用的内存就会增加 而堆内存会减少 并且当没有剩余内存时它会崩
  • 如何在Python中将十六进制字符串转换为字节?

    我有一个很长的十六进制字符串 表示一系列不同类型的值 我需要将此十六进制字符串转换为bytes or bytearray这样我就可以从原始数据中提取每个值 我怎样才能做到这一点 例如 字符串 ab 应该转换为字节b xab 或等效的字节数组
  • 创建圆形条形图

    我正在尝试使用我的数据创建圆形条形图 但我什至无法组织数据框来做到这一点 我对来自 3 个不同年份 名为 Campana 的列 和来自一个省的 4 个地区 名为 zona 的列 的 121 个种子进行了分析 我想制作一个如图所示的图表 使用
  • Angular 6:获取对 ng-container 标签内使用 *ngFor 创建的组件的引用

    我使用 ng container 迭代列表并创建组件
  • 关于在 SQL Server 中实现审计表的建议?

    我过去使用的一种简单方法基本上只是创建第二个表 其结构反映了我想要审核的表 然后在主表上创建一个更新 删除触发器 在更新 删除记录之前 当前状态通过触发器保存到审计表中 审计表中的数据虽然有效 但并不是最有用或最容易报告的 我想知道是否有人
  • 无法使用 C# 连接到密码加密的 MS Access 2016 数据库

    当我尝试连接到 MS Access 2016 数据库时 它无需密码即可完美连接 但是当我在使用密码加密后尝试连接到同一数据库时 出现以下错误 无法打开数据库 它可能不是您的应用程序识别的数据库 或者文件可能已损坏 我不知道我应该做什么 我的
  • 带有auto的initializer_list包含多个表达式

    相当简单的问题 auto x11 1 2 3 4 auto x1 1 2 3 4 auto x22 1 0 2 25 3 5 auto x2 1 0 2 25 3 5 据我了解 这里应该没有什么区别 或不 但是 使用 llvm clang