可变长度模板参数列表?

2024-03-05

我记得看到过这样的事情:

template <ListOfTypenames>
class X : public ListOfTypenames {};

也就是说,X 继承自作为模板参数传递的类型名称的可变长度列表。当然,这段代码是假设的。

不过,我找不到这方面的任何参考。是否可以?是C++0x吗?


你可以用当前的 C++ 来完成。您为模板提供了“足够多”的参数,并为它们提供了默认值:

class nothing1 {};
class nothing2 {};
class nothing3 {};

template <class T1 = nothing1, class T2 = nothing2, class T3 = nothing3>
class X : public T1, public T2, public T3 {};

或者您可以变得更复杂并使用递归。首先,前向声明模板:

class nothing {};

template <class T1 = nothing, class T2 = nothing, class T3 = nothing>
class X;

然后你专门针对所有参数都是默认的情况:

template <>
class X<nothing, nothing, nothing> {};

然后,您正确定义通用模板(之前您仅向前声明):

template <class T1, class T2, class T3>
class X : public T1, public X<T2, T3>

请注意,在基类中,您继承了 X 但缺少第一个参数。所以它们都沿着一个地方滑动。最终它们都将成为默认值,并且专业化将启动,它不会继承任何内容,从而终止递归。

Update:只是有一种奇怪的感觉 我以前发过类似的东西你猜怎么着... https://stackoverflow.com/questions/672843/can-templates-be-used-to-access-struct-variables-by-name/672913#672913

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

可变长度模板参数列表? 的相关文章

  • X11 模式对话框

    如何使用 Xlib 在 X11 中创建模式对话框 模态对话框是一个位于应用程序其他窗口之上的窗口 就像瞬态窗口一样 并且拒绝将焦点给予应用程序的其他窗口 在 Windows 中 当试图从模态窗口夺取焦点时 模态也会通过闪 烁模态窗口的标题栏
  • Linq - 从表达式 创建表达式

    我有一个谓词Expression
  • 是否有可能劫持标准输出

    我正在尝试使用 C 重定向 Windows XP 上已运行进程的标准输出 我知道如果我自己生成进程 我可以做到这一点 但对于这个应用程序 我更喜欢一个 监听器 我可以附加到另一个进程 这在纯 Net 中可能吗 如果不可能 在 Win32 中
  • 为什么我会收到未找到分析器的警告?

    我创建了一个玩具项目来检查最新的 NET 7 预览版 5 和正则表达式代码生成 它效果很好 所以我对现有项目应用了相同的更改 不是为了生产 而是为了个人生产力 由于某种原因 我收到这些警告 CS8032 An instance of ana
  • Caliburn.Micro - ShowDialog() 如何关闭对话框?

    EDIT 新信息 刚刚设法让记录器工作 老实说 我不知道 cm 有一个 并且在尝试使用时收到此消息TryClose TryClose requires a parent IConductor or a view with a Close m
  • 使用 C# 将多个音频样本混合到单个文件中

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个能够创建音频文件 mp3 或 wav 的库 NAudio http www codeple
  • 局部函数声明有什么用处吗?

    大多数像我这样的 C 程序员都曾犯过以下错误 class C int main C c declares a function c taking no arguments returning a C not as intended by m
  • 为什么子函数不销毁GtkWindow?

    这是我的代码 void window first void enter window2 GtkWidget w gpointer data void quit GtkWidget w gpointer data void quit int
  • 如何在C中同时运行两个子进程?

    所以我开始学习并发编程 但由于某种原因我什至无法掌握基础知识 我有一个名为 fork c 的文件 其中包含一个 main 方法 在此方法中 我将 main 分叉两次 分别进入子进程 1 和 2 在孩子 1 中 我打印了字符 A 50 次 在
  • ContentDialog 未与 UWP 中心对齐

    据我所知 ContentDialog的默认行为应该是使其在 PC 上居中并在移动设备上与顶部对齐 但就我而言 即使在 PC 上我也将其与顶部对齐 但我不明白发生了什么 我正在使用代码隐藏来创建它 这是我正在使用的代码片段 Creates t
  • 组合框下拉位置

    我有一个最大化的表单 其中包含 500px 的组合框控件 停靠在右上角 Width 尝试打开组合框后 列表的一半超出了屏幕 如何强制列表显示在表单中 棘手的问题 我找不到解决这个问题的好办法 只是一个解决方法 添加一个新类并粘贴如下所示的代
  • 如何自定义 Google 测试失败消息?

    我编写了一个如下所示的 Google 测试 它将一些计算值与 CSV 文件中预期存储的值进行比较 class SampleTest public testing Test public void setupFile const std st
  • .NET 5 EF Core SaveChangesAsync 因错误而挂起

    尽管这个问题有很多结果 但没有一个真正给我明确的答案 每次我尝试通过 AddAsync 和 SaveChangesAsync 方法插入错误数据 例如重复的主键 时 我都会看到以下日志 执行 DbCommand 失败 15 毫秒 我还在 SQ
  • 从 DataRow 单元格解析 int [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 如何从 DataRow 单元格解析 int 值 Int32 Parse item QuestionId ToString 这段代码可以工作 但看
  • 如何同步nosql db(ravendb)中的更改

    我已经开始在 RavenDB 的示例上学习 NoSQL 我从一个最简单的模型开始 假设我们有由用户创建的主题 public class Topic public string Id get protected set public stri
  • 选择合适的IDE

    您会推荐使用以下哪种 IDE 语言来在 Windows 下开发涉及识别手势并与操作系统交互的项目 我将使用 OpenCV 库来执行图像处理任务 之后 我将使用 win32 API 或 NET 框架与操作系统交互 具体取决于您建议的工具 性能
  • 如何将System.Windows dll添加到Visual Studio 2010 Express?

    我正在开发一个小型应用程序C and VS2010 as IDE with NET框架4 我想用CaptureSource类以便从笔记本电脑的网络摄像头捕获视频 为此我需要添加一个命名空间System Windows DependencyO
  • C 变量声明的效率 [重复]

    这个问题在这里已经有答案了 例如 在 C 中声明一个变量需要多长时间int x or unsigned long long var 我想知道它是否会让我的代码在类似的事情中更快 for conditions int var 0 code 这
  • 使用多态对象数组进行 JSON 反序列化

    我在涉及多态对象数组的 JSON 反序列化方面遇到问题 我已经尝试过记录的序列化解决方案here https stackoverflow com questions 5186973 json serialization of array w
  • 如何在 C 中创建最低有效位设置为 1 的掩码

    这个功能如何运作 最低有效 n 位设置为 1 的掩码 Example n 6 gt 0x2F n 17 gt 0x1FFFF 我根本不明白这些 尤其是 n 6 gt 0x2F 另外 什么是面膜 通常的方法是采取1 并将其左移n位 这会给你类

随机推荐

  • 如何在地图上以最少的重叠绘制网络

    我有一些作者所在的城市或国家 我想知道是否可以在地图上绘制合著者的网络 图 1 其中包含国家的坐标 请考虑来自同一国家 地区的多名作者 编辑 可以像示例中那样生成多个网络 并且不应显示可避免的重叠 这是为数十位作者准备的 缩放选项是可取的
  • \r 不生成换行符

    我使用以下代码 if delanaloge equals stari if novi equals zdruzen else zdruzen zdruzen novi r nap true r附加以创建换行符 但它不会像我预期的那样生成换行
  • VC++中如何判断链接是否存在?

    我有一个链接 我已通过正则表达式检查该链接是否是有效的 URL 现在 我想检查该链接是否是有效的 http 链接 即它不应该是不存在的链接 VC 6 0 MFC 有办法检查吗 一种选择是尝试使用以下方法从该 URL 获取数据URLOpenB
  • 关闭 Twisted conch SSH 连接的正确方法是什么?

    关闭 Twisted conch SSH 连接的正确方法是什么 有没有明确的方法来做到这一点 我见过的所有 Twisted conch 示例都会关闭 SSH 通道 然后停止反应器 反应堆关闭似乎可以处理关闭连接 但是 我将 wxreacto
  • 在Atom中使用anaconda环境

    我已经安装了 Anaconda Python 3 6 和 tensorflow python 3 5 我已经设法让它在 Spyder 和 sublime text 3 上运行 通过创建新的构建系统 现在所有的都是使用Atom 我不习惯 所以
  • 在heroku中记录多行消息

    我正在使用 NodeJS 开发一个应用程序并部署在 Heroku 中 我需要记录多行消息 例如堆栈跟踪和其他多行信息 但希望将它们保留为一条日志消息 问题是当使用console log 或任何使用的框架console log stdout
  • 如何从 AsyncTasks doInBackground() 检索数据?

    我会尽可能让这个简单 我的控制层中有一个使用类的方法CallServiceTask延伸AsyncTask 当调用新的CallServiceTask execute parameters 如何检索从返回的数据doInBackground 我发
  • Pig Latin:从某个日期范围加载多个文件(目录结构的一部分)

    我有以下场景 小猪版本使用0 70 HDFS 目录结构示例 user training test 20100810
  • 如何将自定义视图动态添加到 Visual Studio for Mac C# 中的视图

    我正在完成一个项目 其中我将拥有同一组表单组件的多个正方形大小的实例 我可以在表单 UI 中手动创建 8 个实例 或者我宁愿做的是创建一个视图 或项目渲染器 然后将该视图的实例动态添加到我的主视图中 如何将创建的自定义视图动态添加到 Xam
  • 使 AdMob 在 Android 2.3 设备上运行?

    好吧 我读了很多文章 问题和答案 但仍然找不到适合我的 我正在尝试在 Android 应用程序中显示 AdMob 横幅 我正在使用 Eclipse 和最新的 AdMob SDK 4 3 1 它需要 Android 3 2 13 才能工作 问
  • 如何禁用/启用带有复选框的按钮(如果选中)[重复]

    这个问题在这里已经有答案了 请我需要一个可以与下面的 HTML 代码一起使用的脚本 以便在选中或取消选中复选框时禁用 启用按钮
  • Android - “setToolbarColor(int)”和“setSecondaryToolbarColor(int)”已弃用

    我使用此代码打开 Chrome 自定义选项卡的链接 但它正在显示 Deprecated for setToolbarColor and setSecondaryToolbarColor 我还没有找到任何可以替代的东西 注意 Android
  • 根路径不适用于 php include

    在链接开头获取根文件夹在 php include 中不起作用 例如 example example php 解决办法是什么 我假设根文件夹是指您的网络文档根目录 而不是文件系统根目录 为此 您可以 将 Web 根文件夹添加到包含路径 htt
  • 无法启动捆绑包 - 缺少要求(osgi.wiring.package)

    我是 Apache karaf 和 OSGI 的新手 我正在尝试编写并运行一个非常简单的包 但我在启动该捆绑包时收到此错误 执行命令时出错 在捆绑包上执行命令时出错 无法 解决 karaf 86 R 86 0 缺少要求 karaf 86 R
  • Rails ActiveRecord:验证单个属性

    有什么方法可以验证 ActiveRecord 中的单个属性吗 就像是 ac object valid attribute name 有时有些验证非常昂贵 例如需要执行数据库查询的验证 在这种情况下 您需要避免使用valid 因为它所做的事情
  • 更改我的 iPhone 应用程序的最低操作系统要求?

    我做了一个简单的申请 然后提交审核 之后 应用程序详细信息声称最低操作系统要求是 3 1 2 我使用该 SDK 如果我将目标的 iPhone OS 部署目标更改为较低的 iPhone OS 那么它可以 解决 我的问题吗 有没有风险 我使用一
  • 链接静态库时未捕获异常

    我开始在程序中实现 try catch 但是当我测试它时 异常从未被捕获 程序只是崩溃了 即使是最简单的 try catch 用例也会失败 即 try throw 123 catch cerr lt lt This line doesn t
  • 如果 dotCover 没有报告足够高的结果,我如何才能使 TeamCity 构建失败?

    我希望 TeamCity 运行我的 mSpec 测试并报告测试所涵盖的代码 我还希望 TeamCity 报告构建失败如果某些命名空间中的代码覆盖率未达到阈值 e g MyProduct ImportantStuff必须是100 but My
  • 打印通用字符

    谁能解释为什么通用字符文字 例如 u00b1 被编码为 UTF 8 字符字符串 为什么下面会打印加号 减号 include
  • 可变长度模板参数列表?

    我记得看到过这样的事情 template