C++可变模板参数的使用

news/2024/10/31 9:29:23/

最近在封装打印函数,需要支持不同参数个数和类型,用了函数重载感觉有点麻烦且不太能满足所有的条件。研究了一下C++11的新特性可变模板参数

模板定义:声明可变参数模板时需要在typename或class后面带上省略号“…”。
template <class… T>
**可变模版参数函数:**可变模版参数传进来的是一个参数包,我们需要将参数包展开。
由于包里面的参数个数是不确定的,可以使用递归的方法展开。
这里注意我们还要准备一个递归终止函数,参数包Args…在展开的过程中递归调用自己,每调用一次参数包中的参数就会少一个,直到所有的参数都展开为止,当没有参数时,则调用非模板函数终止递归过程。

递归终止函数
void PrintStd() 
{ std::cout <<"递归终止" << endl;
}展开函数
template<typename Type, typename ...Args>
/*** @param const Type currentArg   本次展开拿到的参数* @param const Args... args      参数包中剩余的参数*/
void PrintStd(const Type currentArg, const Args... args)
{std::cout << currentArg << endl;PrintStd(args...);
}
//调用测试
int main()
{PrintStd("hello", "world",100);return 0;
}

结果输出:
在这里插入图片描述

可变模版参数求和

template<typename T>
int getSum(T t) 
{ return t; 
}
template<typename Type, typename ...Args>
int getSum(const Type currentArg, const Args... args)
{return  currentArg + getSum(args...); 
}int main()
{int ret=getSum(1,2,3,4,5);std::cout << "ret=" << ret << endl;return 0;
}

结果输出:ret=15


http://www.ppmy.cn/news/83544.html

相关文章

中国人民大学与加拿大女王大学金融硕士——在职人员成长路上的选择与追求

在职人员职场充电&#xff0c;选择中国人民大学与加拿大女王大学金融硕士项目是正确的吗&#xff1f;其实每个选择都有各自的收获和代价&#xff0c;不能简单的用“优劣”、“好坏”去衡量。要看这个选择是否给给予你想要的&#xff0c;还要看这个选择的代价是否是你愿意承受并…

如何在华为OD机试中获得满分?Java实现【计算某字符出现次数】一文详解!

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: Java华为OD机试真题&#xff08;2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

还没搞懂重写和重载吗?这篇文章可以帮助你

文章目录 前言一、向上转型1.概念&#xff1a;2.CODE 二、重写三.重载四.动态和静态绑定总结 前言 首先&#xff0c;会大致介绍一下什么叫做向上转型&#xff0c;方便后续的理解 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、向上转型 1.概念&a…

JQuery实现小项目

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE初阶 目录 文章目录 一、JQuery是什么 二、JQuery项目 2.1 猜数字 2.2 表白墙 2.3 聚合搜索 2.4 计算器 一、JQuery是什么 jQuery是一个快速、简洁的JavaScript框架&#xff0c;是继Prototype之…

Java设计模式七大原则-单一职责原则

✨作者&#xff1a;猫十二懿 ❤️‍&#x1f525;账号&#xff1a;CSDN 、掘金 、个人博客 、Github &#x1f389;公众号&#xff1a;猫十二懿 单一职责原则 1、单一职责介绍 单一职责原则&#xff08;SRP&#xff1a;Single Responsibility Principle&#xff09;是指一个类…

【C语言】实现猜数字游戏——随机数

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;C语言 该篇将对 选择与循环语句 进行运用&#xff0c;实现猜数字游戏。 需求&#xff1a;游戏后可以选择再次进行游戏&#xff0c;也可以选择…

深度学习GPU选购指南

【导读】最近&#xff0c;曾拿到斯坦福、UCL、CMU、NYU博士offer、目前在华盛顿大学读博的知名测评博主Tim Dettmers在自己的网站又上线了深度学习领域的GPU深度测评&#xff0c;到底谁才是性能和性价比之王&#xff1f; 众所周知&#xff0c;在处理深度学习和神经网络任务时&a…

行业报告 | 2022文化科技十大前沿应用趋势(下)

原创 | 文 BFT机器人 04 商业创新 趋势7&#xff1a;区块链技术连接传统文化&#xff0c;数字藏品市场在探索中发展 核心内容&#xff1a; 2022年&#xff0c;数字藏品在区块链技术的助力下应运而生。狭义的数字藏品是指使用区块链技术、基于特定的文化资源所生成唯一的数字凭…