码迷,mamicode.com
首页 > 其他好文 > 详细

可变参数模板用法

时间:2015-04-24 09:06:25      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:

//可变参数模板
//可变参数模板,可以创建可接受可变数量参数的模板函数和模板类
//本程序通过模板函数来实例一下可变参数模板的基本用法
#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;
}

可变参数模板用法

标签:

原文地址:http://blog.csdn.net/linukey/article/details/45230209

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!