在 C++11 中处理零参数可变参数模板

2023-11-27

考虑以下人工示例:

template <typename T, typename... Args>
struct A {
  typedef T Type;
};

Using A使用 1 个或多个参数可以工作,而使用零个参数则按预期失败:

错误:模板参数数量错误(0,应该是 1 或更多)

是否有可能使A处理零模板参数定义的情况A::Type to int如果没有参数,第一个模板参数是否有?


首先将主模板定义为最一般的情况 - 其中还包括零参数:

template <typename... Args>            //general : 0 or more 
struct A { using Type = int; }

Then 部分地专门用于1个或以上参数为:

template <typename T, typename... Args> //special : 1 or more
struct A<T,Args...>  { using Type = T; }

一旦您有了这种专业化,主模板将用于零参数only!

请注意,在数学上1个或以上是一个特例0个或更多——后者是更一般的情况(不是相反).

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

在 C++11 中处理零参数可变参数模板 的相关文章

随机推荐

  • 存档苹果 LLVM 6.0 错误无法读取配置文件

    在设备测试时一切正常 但是当我想要存档时 xcode 给出这样的错误 错误 无法读取配置文件 没有这样的文件或目录 这是错误 CompileC Users wikimo Library Developer Xcode DerivedData
  • 如何在R中绘制极坐标?

    假设 x t y t 具有极坐标 t 2 t 绘制 t 0 10 的 x t y t R 中没有适当的函数来用极坐标进行绘图 我尝试通过给出 x t y 2 t 来绘制正态图 但生成的图表并不符合预期 我从 使用 r 进行科学编程和模拟简介
  • C# 中的定点数学

    C 中有一些关于定点数学的好资源吗 我见过这样的事情 http 2ddev 72dpiarmy com viewtopic php id 156 和这个 进行定点数学运算的最佳方法是什么 以及一些关于小数是真正定点还是实际上浮点的讨论 更新
  • 如何通过 URL 下载文件并获取其名称

    这是我用 JS jQuery 制作的用户脚本 我想知道是否可以根据给定的 URL 找到文件名 它的形式如下 http example org download php action download id 1234 然后该链接会下载一个文件
  • java每秒运行一次循环

    int delay 1000 delay for 1 sec int period 10000 repeat every 10 sec Timer timer new Timer timer scheduleAtFixedRate new
  • 可以从 Android SQLiteConstraintException 获取具体的错误详细信息吗?

    对于某些数据 我收到以下错误 并且概念足够清晰 android database sqlite SQLiteConstraintException FOREIGN KEY constraint failed code 787 但是 这并不能
  • “BigInteger”的“bitCount()”和“bitLength()”有什么区别

    的描述位计数 and 位长度 相当神秘 公共整数bitCount 返回此 BigInteger 的二进制补码表示形式中与其符号位不同的位数 当在 BigIntegers 上实现位向量样式集时 此方法非常有用 返回 此 BigInteger
  • 在添加现有键的同时更新 python 字典?

    我正在寻找最有效和Pythonic 主要是有效 的方法来更新字典 但如果存在现有键 则保留旧值 例如 myDict1 1 3 2 3 2 1 2 3 1 myDict2 4 5 2 5 2 4 2 5 4 myDict1 update my
  • 在 jQuery 1.7 中取消选中复选框的正确方法是什么?

    我正在从 jQuery 1 5 1 升级 我已经阅读了使用 检查 复选框 在 1 6 中 的 新 方法 prop checked true 但是删除复选框的正确 首选方法是什么 这两种方法似乎都有效 someSelector removeP
  • 调试器中的 Step Into 和 Step Over 有什么区别

    我想调试 Java 程序的整个流程 我看到有几种选择stepping通过我的程序 有什么区别步入 and 跨过去 考虑以下带有当前指令指针的代码 接下来将执行的行 由 gt 在f x 线路输入g 被称为g 2 线路输入main public
  • RestSharp - 令牌身份验证

    我正在尝试发送带有令牌身份验证的 GET 请求 但收到未经授权的响应 如果我在邮递员上发送相同的请求 它就会起作用 这是我的代码 string url string Format 0 batchs MyUrl RestClient clie
  • 如何在rabbitmq中池化通道?

    我一直在尝试在线程之间共享连接 并仅在线程创建时打开通道 但经过更多研究后 我想我也想尝试connection pooling 我怎样才能在rabbitmq上做到这一点 或者这是我可以普遍应用的一般想法 我的目标是生成 X 个线程 然后让它
  • MongoDB 和 Java 驱动程序:查询中“忽略大小写”

    这是我现在使用的代码 如何添加 忽略大小写 属性 DBObject query new BasicDBObject prop value Thanks 当我遇到确切的问题时 我无法通过忽略大小写来查询 我最终复制了我想要搜索的值并将其标准化
  • 将事件侦听器作为 Class.prototype 函数删除

    我试图在我的项目中有一个基于 Class prototype 的类 但我没有内联函数 考虑到这个例子 不可能删除事件监听器myVideo我在课堂上拥有的视频对象 这是一个理论示例 而不是我的实际生产代码 var myClass functi
  • Android Studio Assistant:无法将客户端添加到您的 Firebase 项目

    当在 Android Studio 中使用新的 Firebase Assistant 添加新服务时 我收到此错误 Firebase 由于以下原因 无法将任何客户端添加到您的 Firebase 项目中 具有此包名称和 SHA1 的应用程序已连
  • Google Oauth 删除访问范围

    假设我有一个应用程序 并且我的应用程序已经运行多年 请求用户访问 相关应用程序请求的访问权限超出了所需的访问权限 或者应用程序已更改并且不再需要它所请求的某些范围 违规范围已被删除 因此不再提示新用户进行我们不需要的访问 然而 我们现在有许
  • 要求命令在 Snow Leopard 上的 bash irb 中不起作用

    我正在学习 Zed Shaw 的 艰难学习 Ruby 练习 25 http ruby learncodethehardway org ex25 html 当我导航到保存 ruby 文件 ex25 rb 的目录并启动 IRB 时 出现以下错误
  • 文本视图中的 Html 具有不同的粗体和斜体字体

    我正在尝试在TextView The TextView文本设置为textView1 setText Html fromHtml htmlText html 包含粗体和斜体跨度 现在 我购买了自定义字体 该字体附带 3 个不同的文件 ttf
  • 如何将架构和一些数据从 SQL Server 复制到另一个实例?

    我的产品使用 SQL Server 数据库 每个客户端在自己的 Intranet 上都有自己部署的实例 该数据库有大约 200 个表 其中大多数是只有几行的配置表 但也有一些事务数据表可能有几百万行 我经常需要解决客户的配置问题 因此我需要
  • 在 C++11 中处理零参数可变参数模板

    考虑以下人工示例 template