可变参数模板用法

//可变参数模板
//可变参数模板,可以创建可接受可变数量参数的模板函数和模板类
//本程序通过模板函数来实例一下可变参数模板的基本用法
#include<iostream>
using namespace std;
void one(){}//当最后一个参数传完后,需要一个无参的重载版本


template <typename T>//当只剩最后一个参数时,编译器优先选择此模板,这样最后一个输出后面就没有逗号了
void one(T v)
{
    cout << v << endl;
}


//...为元运算符
//F 是一个模板参数包,f 是一个函数参数包,T 与一种类型匹配,F 与 T 的区别是 F 与任意数量的类型匹配
//关键点是:模板参数包 F 要与 函数参数包 f, 无论是类型还是数量上,都要相匹配。
template <typename T, typename... F>
void one(T v, F... f) //每次从传的所有参数里面拿出一个来给 v,这样,就能递归完所有的传参
{
    cout << v << ",";
    one(f...); //将元运算符...放在 f 的右边,可以展开参数包,展开传给f的一系列参数
}


int main()
{
    one("asd",1,2,3,4); //这一系列的参数传给模板函数包F,F再将参数包传给函数参数包f


    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值