可变参数模板、参数包及其在参数列表中讨论的歧义

2023-11-25

在这个问题中,我将参考我之前的问题.

在该问题中,我发现以下内容无效:

template<typename T, typename... A, typename S>
class C { };

这是因为:

对于类模板来说,[这不是有效的代码],因为必须始终指定它们的参数,这总是会导致歧义,除非参数包位于末尾并吞掉任何剩余的模板参数。

这当然有道理,我明白了。

然后,作为一种替代方法,提出了以下涉及专业化的方法:

template<typename F, typename S>
class C;

template<typename T, typename... A, typename S>
class C<T(A...), S> { };

事实上,它似乎有效,所以感谢提出它的人。

无论如何,我不明白的是为什么这是有效的代码而前一个不是。
它是否应该遭受与先前解决方案相同的模糊性?在这种情况下,编译器为什么以及如何解决这种歧义?
根据上一个问题(请参阅本问题开头的链接),在我看来,可变参数部分仍然应该将所有参数吸收到最后,因此该代码也不应该有效。
当然,我错了,但是我的推理究竟出了什么问题呢?


在类模板中,预期模板参数列表C<a,b,c,d,e,f>需要匹配

template<typename T, typename... A, typename S>

其中...A 只是浮动在参数列表中。

但在特化中,需要匹配的不是模板变量的列表,而是模式:

C<T(A...), S>

这很容易,因为A...被定界。

因此,在模板专业化中,参数列表只是符号、一些标量和一些参数包的清单,它们将以模式的形式出现。

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

可变参数模板、参数包及其在参数列表中讨论的歧义 的相关文章

  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 按成员序列化

    我已经实现了template
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • Bootstrap 中 nav 与 div.navbar 的区别

    Bootstrap的一些例子 use div navbar保持导航栏 以及其他示例 例如 在组件文档页面 use nav navbar 这两种方法有什么区别 是否有使用其中一种而不是另一种的指南 两者都会输出相同的设计 但使用nav标签在方
  • CGAffine变换并缩放到图像中心

    我开始使用 Objective C 学习适合绝对初学者的 iPhone 和 iPad 应用程序 作者 Rory Lewis书 但我被困在第五章了 我想做一个缩小图像的按钮 我的问题是 在我编写完所有代码后 图像缩小到 UIImageView
  • 是否有任何跨浏览器 JavaScript 可以使 vh 和 vw 单位工作

    注意 好的 当我输入这个问题时 我遇到了this建议使用的问题 media query但又被问到 2011年 如你所知 CSS3 引入了新的视口百分比长度单位 vh and vw 我觉得这对于可靠的响应式布局非常有用 所以我的问题是 是否有
  • 如何隐藏 JScrollBar 中的箭头按钮

    我需要隐藏箭头按钮java awt Scrollbar VERTICAL 在 AWT 应用程序中 有谁知道如何实现这一点 我看到一个例子here 但代码只是隐藏了按钮 按钮的空白空间仍然存在 它没有被滚动条占据 更准确地说 这是我应该实现的
  • 从 Windows 窗体打开 URL

    我正在尝试从 Windows 窗体提供指向我公司网站的链接 我希望表现良好并使用用户首选的浏览器启动 从 Windows 窗体应用程序在用户的默认浏览器中打开 URL 的最佳方法是什么 ProcessStartInfo sInfo new
  • 将 jar 添加到类路径、Eclipse、Android

    目前 我转到属性 gt 构建路径 gt 库 gt 然后将外部jar添加到我的类路径中 我知道这是正确的方法 至少对于java来说是这样 然而 问题是我在 Android SDK 2 1 上运行它 当我运行该程序时 我认为 android 模
  • 如何管理 Visual Studio Team Services (TFS) 的需求(规范)?

    我正在使用本地 TFS 并计划迁移到 Visual Studio Team Services 但我仍然有一个问题 如何在 VSTS 或 TFS 中正确管理 存储 编辑 跟踪 软件项目的需求 规范 最好的解决方案是什么 你用什么 现在我们使用
  • gcp - 在数据库插入时触发云功能?

    不知道如何搜索这个 我正在寻找一种在 Cloud SQL 中的数据库中插入新行时触发 Cloud Function 的方法 搜索 google云功能事件 或 触发器 会出现Firebase结果 这不是我想要的 有一系列的云功能可以接收数据并
  • Gson不解析类变量

    我正在使用 Gson 并且我有一个对象 它的字段之一是类 class A private Class aClass 当我使用默认的 Gson 对象将实例解析为 Json 时 aClass 为空 知道为什么吗 您需要自定义类型适配器 这是示例
  • 点击空白处的事件如何处理?

    我想在列表视图左键单击空白区域时捕获事件 即单击列表视图控件中的任何项目 我在列表视图的事件列表中进行搜索 但没有找到 我怎样才能做到这一点 请帮忙 编辑 如果我能捕获此事件 我想要做什么 取消选择列表视图中的所有项目 如果将处理程序附加到
  • 在 div 内将 2 个跨度一个左对齐,另一个右对齐

    有人可以编写 CSS 片段来做到这一点吗 div class container span class left Left span span class right Right span div 这是CSS container conta
  • django 模板中的模/模等效运算符/函数?

    我正在学习 django 的模板系统并尝试做一些相对琐碎的事情 h2 State h2 ul class states for state in states li class state elements a href state nam
  • 如何在 Rails 中使用 GROUP_CONCAT?

    我有以下查询 我想将其与 ActiveRecord 一起使用 以便可以将其转换为生产服务器上基于本机 ORACLE 的查询 现在我正在使用 SQLITe select c name co code GROUP CONCAT c name A
  • 如何调用同名字符变量的对象

    我正在尝试在 R 中编写一个函数 以类似的方式批量分析多个文件 这些文件属于类ExpressionSetIllumina 我可以使用目录中所有文件的名称创建一个字符 字符串 向量并加载每个文件 list list files for i i
  • 使用 boost::asio 配置 TCP keep_alive [重复]

    这个问题在这里已经有答案了 Linux和Windows都支持TCPkeep alive数据包 它们可以被激活和配置 取决于系统 setsockopt调用 参见例如本文对于Linux的情况 使用时boost asio似乎支持保持活动消息 请参
  • 开发模式下资产编译速度慢

    我有一个大型 Rails 应用程序 其中包含数百个咖啡脚本文件 有时 当我在咖啡脚本文件中进行微小更改或切换分支时 整个资产正在预编译 我必须等待很长时间才能加载页面 Started GET assets application js fo
  • 如何在Android中将exif数据写入图像?

    我正在尝试写一个User Comment and TAG GPS使用 exif 界面在 Android 应用程序中捕获图像 但由于某种原因 当我在图库中查看图像的详细信息时 标签似乎没有附加到图像中 看来标签可能没有被写入捕获的图像 因为文
  • Android 设备选择器 - 我的设备似乎处于离线状态

    我开发了一个应用程序 并计划将其部署到我的 HTC Desire 上 我已经安装了USB驱动 我在手机上打开了USB调试 并选择仅在手机插入时充电 当我运行应用程序 Android 设备选择器时 显示我的设备处于离线状态 我被困在这一点上
  • PEP 424 __length_hint__() - 有没有办法对生成器或 zip 执行相同的操作?

    刚刚遇到这个很棒的 length hint PEP 424 中的迭代器方法 https www python org dev peps pep 0424 哇 一种在不耗尽迭代器的情况下获取迭代器长度的方法 我的问题 有没有简单的解释一下这个
  • 可变参数模板、参数包及其在参数列表中讨论的歧义

    在这个问题中 我将参考我之前的问题 在该问题中 我发现以下内容无效 template