尾随返回类型中的占位符是否会覆盖初始占位符?

2024-01-13

g++ 似乎接受任意组合auto and decltype(auto)作为初始和尾随返回类型:

int a;
auto f() { return (a); }                             // int
auto g() -> auto { return (a); }                     // int
auto h() -> decltype(auto) { return (a); }           // int&
decltype(auto) i() { return (a); }                   // int&
decltype(auto) j() -> auto { return (a); }           // int
decltype(auto) k() -> decltype(auto) { return (a); } // int&

然而,clang拒绝了j and k,说:错误:具有尾随返回类型的函数必须指定返回类型“auto”,而不是“decltype(auto)” (示范 http://goo.gl/uw5h0b).

哪个编译器是正确的?哪个规则(auto or decltype(auto)) 应该在每种情况下使用?在中使用占位符类型是否有意义?尾随返回类型?


auto引入时需要尾随返回类型.

§8.3.5 [dcl.fct] /2

在一份声明中T D where D有形式

D1 ( parameter-declaration-clause ) cv-qualifier-seqopt ref-qualifieropt exception-specificationopt attribute-specifier-seqopt trailing-return-type

以及所包含的类型声明符 ID在声明中T D1是“派生-声明符类型列表 T”,

T应该是单一的类型说明符 auto. [...]

也可以看看核心问题 1852 http://open-std.org/jtc1/sc22/wg21/docs/cwg_toc.html#1852与 [dcl.spec.auto]/1 明显矛盾。

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

尾随返回类型中的占位符是否会覆盖初始占位符? 的相关文章

随机推荐

  • 雄辩错误:尚未设置外观根

    我已经在 Slim Framework 2 中成功地使用 Eloquent 作为独立包 但现在我想利用 Illuminate Support Facades DB 因为我需要通过从 2 个表获取信息并使用数据库中的 Left Join 和
  • 如何编写包含布尔值的构造函数?

    这是一个愚蠢的问题 但自从我使用 java 以来已经很长时间了 我如何使用布尔值编写我的构造函数 或者我应该只编写一个默认构造函数 我最近一直在使用C 我忘记了很多java的语法 这是我到目前为止所拥有的 public class Crea
  • Node.js、dgram.setBroadcast(flag) 由于“EBADF”而失败

    我正在使用 Node js 0 6 9 并尝试发送数据报广播包 代码 var sys require util var net require net var dgram require dgram var message new Buff
  • 此类不符合键值编码

    我创建了三个文件SettingsViewController h SettingsViewController m 和SettingsViewController xib 我在单击一行中的单元格时显示 SwttingsViewControl
  • Lua - 我怎样才能获得回报?

    我有兴趣获取函数的任何返回格式 例如 function foo return 1 end local result foo foo is numeric 1 function foo return 1 2 3 end local resul
  • 如何仅重新加载 UICollectionView 的数据部分?

    我试图仅重新加载 UICollectionView 的数据部分 而不是页眉或页脚 补充视图 当我使用reloadData方法 页眉和页脚部分也会重新加载 这就是我想要的 我找到了方法reloadSections 但我不知道为什么它不起作用
  • Android-sdk 管理器未显示所有包

    我有一个问题 我的 android sdk manager 突然停止显示所有软件包 它只显示已安装的软件包 你们能帮我解决这个问题吗 导航到文件 gt 设置 gt Android SDK gt SDK 更新站点选项卡 在该检查中强制 htt
  • ADO.Net 最佳实践 - 进行异步数据库调用时的单个连接与多个连接

    我正在使用 ADO Net 连接到一些 Sql Server 和 Oracle 数据库 并且我想同时运行一些查询 我对 Sql Server 使用 SqlClient 命名空间中的类 对 Oracle 使用 ODP Net 中的类 对于 S
  • watchkit 扩展未启动

    我无法在模拟器上启动 iOS Watch 应用程序 在 Yosemite 上安装了最新的 Beta 6 2 1 我创建一个基于单一视图的应用程序 2 添加App Watch目标 3 自动创建分机和Watch App 4 运行App并启动模拟
  • 如何使图像标题宽度与图像宽度匹配?

    我正在尝试设计这个样式 div class figure img src some image jpg p class caption span class caption text Some caption of any length s
  • C# 获取%AppData%的路径

    C 2008 SP1 我正在使用下面的代码 dt ReadXml AppData DateLinks xml 但是 我收到一个异常 该异常指向我的应用程序运行的位置 找不到路径的一部分 D Projects SubVersionProjec
  • 打字稿导入类

    我已经尝试让这个东西工作很长一段时间了 到目前为止 我找到的解决方案还没有对我有用 这就是我所拥有的 Test ts module t export class Test constructor alert test Main ts
  • 在 JSF 中动态创建响应

    我想在我的 JSF 页面上有一个链接 单击此链接时 Java Web Start 应用程序将启动 该应用程序根本不影响当前页面 该应用程序会自行启动 问题是 我需要动态生成启动 Java Web Start 应用程序的 JNLP 文件 基本
  • 如何在 Pandas 数据框中堆叠行以获得一个“长行”?

    假设我有一个 4 行 3 列的数据框 我想水平堆叠行 这样我就得到一行 12 列 如何操作以及如何处理冲突的列名称 您可以通过以下方式实现这一目标stack计算框架以产生一系列所有值 然后我们希望使用以下方法将其转换回 dfto frame
  • 将二进制浮点“1101.11”转换为十进制(13.75)的正确算法?

    我用C编写了一个程序来转换浮点数以二进制表示 http kipirvine com asm workbook floating tut htm 1101 11 化为小数 13 75 但是 我似乎无法从算法中获得正确的值 将二进制浮点数转换为
  • JavaScript 中的“闭包”到底指的是什么?

    我理解闭包是什么 但我在理解这个术语到底是什么时遇到了一些困难closure指 我在许多网站上看到过这个术语 但很少有人就其实际定义达成一致 是保存在栈帧上的变量吗 是返回的函数吗 它是外部函数的范围吗 它是内部 返回 函数的范围吗 是不是
  • 如何在 Swift 3 中测试 URL 并获取状态代码?

    我正在使用最新版本的 Xcode 撰写本文时为 8 1 它使用 Swift 3 0 我想做的就是获取一个字符串 将其转换为 URL 并测试该 URL 看看它是否会给出 404 错误 我已经能够使用以下方法创建 URL 和 URLReques
  • Node.JS 内核模式线程

    我试图弄清楚 Node JS 其 Windows 版本 是如何在幕后工作的 我知道有用户模式和内核模式线程 并且我知道处理模型如下所示 我还知道从内核模式线程移动到用户模式线程被认为是上下文切换 Node JS C 非阻塞工作线程是内核模式
  • Angular2 在模板和变更检测中的功能

    我试图在服务中构建一种方法 检查是否应根据当前用户的权限向当前用户显示导航按钮 我知道这只是装饰性的 安全性 因此这是放置在模板内的按钮
  • 尾随返回类型中的占位符是否会覆盖初始占位符?

    g 似乎接受任意组合auto and decltype auto 作为初始和尾随返回类型 int a auto f return a int auto g gt auto return a int auto h gt decltype au