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

可变参数模板

时间:2016-05-13 08:14:32      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:

 

1,基础应用

#include<iostream>
#include<string>
#include<sstream>
using namespace std;
template<typename... Args> void g(Args... args)
{
    cout<<sizeof...(Args)<<endl;    //类型参数的数目
    cout<<sizeof...(args)<<endl;    //函数参数的数目
}

template<typename T>
string f(T t)
{
    cout<<"f()"<<endl;
    ostringstream strm;
    strm<<t<<-<<t<<endl;
    cout<<strm.str();
    return strm.str();
}
template<typename T>
ostream &print(ostream &os, const T &t)
{
    cout<<"p1()"<<endl;
    return os<<t;
}
template<typename T, typename... Args>
ostream &print(ostream &os, const T &t, const Args&... reset)
{
    cout<<"p2()"<<endl;
    os<<t<<", ";
    //return print(os, reset...);
    return print(os, f(reset)...);
}

int main()
{
    g();
    g(1);
    g(1, 1.2);
    g(1, 1.2, "hello");

    print(cout, 1, 3.4, "hello");
    cout<<endl;
    return 0;
}

  重点理解其递归调用

2,

可变参数模板

标签:

原文地址:http://www.cnblogs.com/jokoz/p/5485004.html

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