当前位置: 首页 > news >正文

C++ 可变参数模板(Variadic Templates)

        C++11 新标准提出 可变参数模板的概念。它支持 模板参数包函数参数类型包函数参数包。"包" 的语法为 ... 

一、基本概念

  • 模板参数包:在模板参数列表中,用 ... 修饰 class 或 typename 则对应的模板参数是一个     包,即一个符号代表 N 个类型,如下代码 Types 就是模板参数包;
  • 函数参数类型包:同样在函数参数类型列表中的类型后添加 ... 表示函数参数类型包,如下 const T& ... ;
  • 函数参数包:函数传参时,参数名后有... 修饰表示函数参数包;
void print() {}template<class T, class... Types>
void print(const T &arg, const T& ... args) {cout << arg << std::endl;print(args...);
}int main(int argc, char* argv[]) {print(1, 56.8f, 'y', "hello");
}

二、参数包展开

  • 递归展开

        main 函数中用参数 1, 56.8f, 'y', "hello" 调用 print 函数会匹配到 template<class T, class... Types> void print(const T &arg, const T& ... args), 第一个实参1会传给 arg,剩余的参数传给args,然后递归调用函数模板print,这时参数包的第一(56.8f)又会传给 arg,剩余的参数传给args,这样逐步取第一个,直到取完为止。当参数包为空时需要调用一个无参的 print,所以重载一个 void print()。

http://www.dtcms.com/a/349107.html

相关文章:

  • 2025年09月计算机二级Java选择题每日一练——第六期
  • c#_数据持久化
  • LangGraph 那点事
  • 自定义SpringBoot的自动配置
  • 从零到精通:如何用 Python 高效查找数组中出现频率最高的元素
  • leetcode刷题记录04——top100题里的7道中等题
  • 网络编程-创建TCP协议服务器
  • 后端Web实战-Java代码操作数据库
  • 跨摄像头追踪精度↑79%!陌讯动态决策模型在智慧园区的落地实践
  • 跨摄像头追踪准确率↑18%!陌讯时空感知算法在智慧安防的实战解析
  • 复杂场景鲁棒性突破!陌讯自适应融合算法在厂区越界检测的实战优化​
  • 使用Localtunnel搭建与外网交互简单的https本地服务器
  • 时序数据库选型“下半场”:从性能竞赛到生态博弈,四大主流架构深度横评
  • Windows 系统下 Android SDK 配置教程
  • 【数据结构与算法】并查集
  • 对象作为HashMap的key的注意事项
  • kubernetes集群搭建
  • 【贪心算法】day2
  • Golang云端编程入门指南:前沿框架与技术全景解析
  • 初探机器学习:从概念定义到前沿应用
  • 湖南(源点咨询)市场调研如何在行业研究中快速有效介入(尾篇)
  • mpv - write_video 流程解析
  • 从技术精英到“芯”途末路:一位工程师的沉沦与救赎
  • 暖色调街头人像摄影照片Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • OpenHarmony Audio子系统全栈解码:从HDI驱动到DSP算法的低延迟高保真之路
  • SQL Server缩小日志文件.ldf的方法(适用于开发环境)
  • 复杂水域场景识别率↑89%!陌讯多模态融合算法在岸边垃圾检测的落地实践
  • Python学习笔记之(二)变量和简单的数据类型
  • 鸿蒙中Image白块问题分析与解决方案
  • Java:HashMap的使用