c++11新特性-可变参数模板

2023-11-12

在c++11中声明可变函数模板需要typename或者class后面跟上"…".

省略号有两个作用:

1.声明一个参数包,这个参数包可以有0到任意个参数

2.在模板定义的右边,可以将参数包展开成一个一个独立的参数

可变函数模板的定义:

template <class... T>
void f(T... args) {
	std::cout << sizeof ...(args) << std::endl;
}

int main(int argc, char* argv[]) {
	
	f(); //0
	f(1, 1.0); //2
	f(1, 1, false); //3

	system("pause");
}
可变模板参数的展开
1.递归函数方式展开参数包
#include <iostream>

void print() {
	std::cout << "empty" << std::endl;
}
//展开函数
template<class T,class ...Args>
void print(T head,Args... rest) {
	std::cout << "paramerter " << head << std::endl;
	print(rest...);
}

int main() {
	print(1, "aaaa", true);
	system("pause");
	return 0;
}
2.逗号表达式和初始化列表方式展开参数包

递归函数展开参数包是一种标准做法,但是必须有一个终止递归函数,借助逗号表达式和初始化列表也可以展开

template<class T>
void print(T t){
  std::cout<< t << std::endl;
}

//常规写法
template<class ...Args>
void expand(Args... args){
 int arr[] = {(print(args),0)...};
}

//lambda表达式写法
template<class ...Args>
void expand(Args... args) {
	std::initializer_list<int> { ([=] {std::cout << args << std::endl; }(),0)... };
}

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

c++11新特性-可变参数模板 的相关文章

  • 获取 TextBox 中的文本行数

    我试图通过标签显示文本框中的文本行数 但是 问题是如果最后一行为空 标签必须显示没有空行的行号 例如 如果它们有 5 行 最后一行为空 则标签应将行数显示为 4 Thanks private void txt CurrentVinFilte
  • 使用sqlbulkcopy之前如何创建表

    我有一个 DBF 文件 我正在尝试导入该文件 然后将其写入 SQL 表 我遇到的问题是 如果我使用 SqlBulkCopy 它需要我提前创建表 但在我的场景中这是不可能的 因为 dbf 文件不断变化 到目前为止 这是我的代码 public
  • 如何向WebRequest添加参数?

    我需要从 Web 服务调用一个方法 所以我编写了以下代码 private string urlPath http xxx xxx xxx manager string request urlPath index php org get or
  • 显示 div 内的用户名列表

    我是 jQuery 新手 在我的项目中 我创建了一个类User其中代码如下所示 static ConcurrentDictionary
  • C# - Visual Studio 中的 System.OutOfMemoryException

    我遇到问题 当我右键单击 Visual Studio 中的主窗体并转到 视图设计器 时 出现错误 它说 引发了 System OutOfMemoryException 类型的异常 堆栈跟踪 at System Reflection Asse
  • 当 foreach 块的内容具有 Conditional 属性时,C# 编译器是否会对其进行优化?

    我正在工作中编写一些调试代码 我想知道我所做的是否会损害性能 让我们看一下代码 foreach var item in aCollection Debug WriteLine item Name 我知道 Debug 类使用 Conditio
  • 如何部署包含第三方 DLL 文件的 C# 应用程序?

    首先 我对部署了解不多 我希望我的问题有意义 我需要将 C 应用程序安装 部署到多个桌面 它需要一个第三方 DLL 文件 一个 C 库 lpsolve55 dll 对于那些感兴趣的人 它是一个免费的 MIP LP 求解器 请参阅 lpsol
  • 如何将 Visual-Studio 2010 切换到 c++11

    我是 c 编程新手 我想尝试 c 11 新功能 那么我要问的是如何切换 Visual studio 2010 才能编译 c 11 源代码 你可以参考这个表 VC10 中的 C 0x 核心语言功能 表格 http blogs msdn com
  • 如何在 ASP.NET Core 6.0 Web API 项目中启用 cors?

    在我的 ASP NET Core 6 0 Web API 项目中配置了 CORS 但预检请求收到 http 405 错误 换句话说 不允许使用 HTTP OPTION 看起来 cors 没有启用 我见过的例子config EnableCor
  • c 使用 lseek 以相反顺序复制文件

    我已经知道如何从一开始就将一个文件复制到另一个文件 但是我如何修改程序以按相反的顺序复制它 源文件应具有读取访问权限 目标文件应具有读写执行权限 我必须使用文件控制库 例如 FILE A File B should be ABCDEF FE
  • 这些工作队列标志意味着什么?

    在研究工作队列时 我遇到了内核中定义的工作队列标志和常量 我有以下我无法理解的疑问 这里的排水和救援到底是什么意思 WQ DRAINING 1 lt lt 6 internal workqueue is draining WQ RESCUE
  • 如何使用 C# 将表格粘贴到 Ms-Word 文档的末尾

    我有一个预制的 Word 模板 其中有一个表格 我想打开它 然后在文档末尾添加 粘贴 另一个表格 问题是它不会转到文档的末尾 而是将新表格粘贴到原始表格的第一个单元格中 任何帮助将不胜感激 previous code copied a ta
  • 文本框中“结束编辑”的事件

    我正在 winform c 中使用文本框 并使用文本在数据库中进行查询 但每次文本更改时 我都需要不断查阅文本框的文本 因此 对于这些 我使用 KeyUp 但这个活动太慢了 文本框编辑完成后是否会触发任何事件 我考虑完成2个条件 控制失去焦
  • 动态菜单创建IoC

    我想知道是否有人知道我如何创建如何使用 AutoFac 之类的东西来让我动态地允许 dll 创建自己的表单和菜单项以在运行时调用它们 所以如果我有一个 员工 dll 新入门表格 证书表格 供应商 dll 供应商详细信息来自 产品形态 在我的
  • 使用 WinAPI 连接禁用的显示设备

    我的问题是启用禁用的监视器ChangeDisplaySettingsEx 我想这不是火箭科学 但经过一番挖掘后 它看起来仍然是不可能的 我找到了一种根据找到的 Microsoft 代码示例禁用所有辅助显示器的方法here https msd
  • 按 Enter 继续

    这不起作用 string temp cout lt lt Press Enter to Continue cin gt gt temp cout lt lt Press Enter to Continue cin ignore 或更好 in
  • 如何使用“路径”查询 XDocument?

    我想查询一个XDocument给定路径的对象 例如 path to element I want 但我不知道如何继续 您可以使用以下方法System Xml XPath Extensions http msdn microsoft com
  • 使用方法的状态模式

    我正在尝试使用方法作为状态而不是类来基于状态模式的修改版本来实现一个简单的状态机 如下所示 private Action
  • C# 和断点 - 这里有魔术师吗?

    我有这个 public static void ByLinkText string text for var i 0 i lt 50 i try Setup Driver FindElement By LinkText text Click
  • 是否可以检测流是否已被客户端关闭?

    简要介绍一下情况 我有一项服务可以通过套接字接收信息并发送回复 连接不安全 我想设置另一个可以为这些连接提供 TLS 的服务 这个新服务将提供单个端口并根据提供的客户端证书分发连接 我不想使用 stunnel 有几个原因 其中之一是每个接收

随机推荐

  • ChatGPT会取代互联网程序员吗?

    ChatGPT会取代互联网程序员吗 ChatGPT是一个基于GPT 3模型的自然语言对话系统 它可以与用户进行自然 流畅 智能的对话交互 回答用户的问题 提供用户所需的信息 甚至生成一些有趣和创意的内容 ChatGPT最近火爆全网 一时间C
  • Linux系统启动分析

    文章目录 大体流程分析 一 BIOS 1 1 BIOS简介 1 2 POST 二 BootLoader GRUB 2 1 What s MBR 2 2 What s GRUB 2 3 boot img 2 4 core img lzma d
  • 我花了一夜用数据结构给女朋友写个H5走迷宫游戏

    文章目录 起因 分析 画线 棋盘 画迷宫 方块移动 结语 先看效果图 在线电脑尝试地址http biggsai com maze html 起因 又到深夜了 我按照以往在公众号写着数据结构 这占用了我大量的时间 我的超越妹妹严重缺乏陪伴而
  • Vue-数据驱动视图(一)数据监听机制

    前言 Vue的一大特点就是数据双向绑定 当数据发生变化时 也可以同时触发界面的变化 即数据驱动视图 要想实现数据驱动视图 那么有这么几个步骤 1 收集我们需要监听的数据 并给他配置个监听器 当数据状态发生变化时触发监听器 然后判断是否需要重
  • Echarts地图自定义图标Symbol同时动态更改图标进行切换显示

    Echarts地图自定义图标Symbol同时动态更改图标进行切换显示 文章目录 0 前言 1 引用模块 2 界面设计 3 数据准备 4 实例地图 5 动态修改气泡图标 6 结束语 0 前言 实现的效果 实现广东显示地图 然后点击地图上的气泡
  • MATLAB数据曲线拟合

    MATLAB数据曲线拟合 数据拟合是我们常用的一种方法 可以通过一组离散的数据点来找到一个函数 使这个函数能够对数据进行预测和描绘 在MATLAB中实现数据拟合非常简单 而且MATLAB还提供了许多工具箱来帮助我们完成这项任务 下面我们将会
  • JAVA并发编程学习笔记10-volatile

    JAVA并发编程学习笔记10 volatile 概念 JMM JAVA内存模型 常见概念 可见性 指令重排序 happens before规则 synchronized volatile Thread start 方法 Thread int
  • 手把手使用Python教你破解谷歌(Google)人机验证码—上篇

    点击上方 Python爬虫与数据挖掘 进行关注 回复 书籍 即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 众里寻他千百度 蓦然回首 那人却在 灯火阑珊处 1 前言 今天呢 咱们来说一下Google 我们都知道 Google
  • 嵌入式习题

    2 STMF4 1 单选题 关于ARM的描述正确的是 D A 代表一家公司名字 B 代表一类处理器 B 代表一种技术 D 以上都正确 2 单选题 STM32F4与ARM的关系 正确的是 A A STM32F4采用ARM Cortex M4内
  • C#教程(6)———— 比较运算符与逻辑运算符

    C 教程 6 比较运算符与逻辑运算符 前言 1 比较运算符 1 1 不同数据类型之间比较 1 2 使用比较运算符比较字符类型 1 3 其它数据类型比较 2 逻辑运算符 总结 前言 在之前的文章中 我们介绍了各种数学运算该怎么进行 而在数学中
  • java.lang.IllegalArgumentException: parameter must be a descendant of this view 的解决方案

    异常出现情况 mLayoutMap为布局view的集合 如当前view为view1可见visible 正常情况view2 view3 view4 为不可见gone 当点击tab2 让view2显示 时抛出上面的异常 分析以及解决方案 par
  • 原型链解释

    一 什么是原型链 原型链是javascript中用来实现类似类继承的一套机制 像链条一样把javascript中的对象连接起来 实现类似子联系父的现象 二 原型链的实现 总的来说 就是 对象的 proto 指向其构造器的prototype对
  • ahx文件转mav文件 工具分享及说明

    前言 今天用ndstool 拆了个nds的游戏 提取音频资源时发现格式为ahx 查了查网上都没有转换资料 格式工厂也不支持此格式 于是在github上找到了个好工具 分享一下 根据 文件格式查询信息库 数据统计 AHX 文件扩展名相关的格式
  • Docker8_2:Docker volume容器数据卷挂载:具名挂载和匿名挂载

    Docker8 2 Docker volume容器数据卷挂载 具名挂载和匿名挂载 docker volume 匿名挂载 不常用 具名挂载 常用 三种挂载方式 docker volume docker volume相关命令 docker 卷操
  • Qt Installer Framework的学习

    Qt Installer Framework的学习 Qt Installer Framework是Qt默认包的发布框架 它很方便 使用静态编译Qt制作而成 并且使用了压缩率很高的7z对组件进行压缩 之所以有这些好处 我才觉得值得花一点儿精力
  • 包装类之Integer案例学习

    引入 首先标题我写了学习Integer作为案例 是因为了解了一个包装类 其他便能深入浅出的学习到了 1 什么是包装类 以前定义变量 经常使用基本数据类型 对于基本数据类型来说 它就是一个数 加点属性 加点方法 加点构造器 将基本数据类型对应
  • 「Python 机器学习」Pandas 数据分析

    Pandas 是一个开源的 Python 库 专为数据处理和分析任务而设计 它提供了高性能 易用的数据结构和数据分析工具 使得在 Python 中进行数据科学变得简单高效 Pandas 基于 NumPy 因此可以与许多其他基于 NumPy
  • 蓝桥杯VIP试题 基础练习 龟兔赛跑预测C语言,C++

    试题 基础练习 龟兔赛跑预测 资源限制 时间限制 1 0s 内存限制 512 0MB 问题描述 话说这个世界上有各种各样的兔子和乌龟 但是研究发现 所有的兔子和乌龟都有一个共同的特点 喜欢赛跑 于是世界上各个角落都不断在发生着乌龟和兔子的比
  • 推荐系统综述:初识推荐系统

    目录 1 引言 2 发展历史 3 研究现状 4 推荐方式和效果评估 4 1 评分预测 4 2 TopN推荐 5 推荐算法 5 1 基于用户行为推荐 5 1 1 基于用户的协同过滤 User Based CF 5 1 2 基于物品的协同过滤
  • c++11新特性-可变参数模板

    在c 11中声明可变函数模板需要typename或者class后面跟上 省略号有两个作用 1 声明一个参数包 这个参数包可以有0到任意个参数 2 在模板定义的右边 可以将参数包展开成一个一个独立的参数 可变函数模板的定义 template