首页 > 其他 > 详细

可变参数模板

时间:2016-05-13 08:11:37      阅读:189      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!