#include "iostream"
#include "thread"
using namespace::std;
//递归指针时调用的非模板函数,函数名要与展开参数包的递归函数模板。
void print()
{
cout<<"递归终止。\n";
}
template<typename T>
void show(T girl)//向超女表白的函数,参数可能是
{
cout<<"亲爱的"<<girl<<".我是一只傻傻鸟。\n";
}
//展开参数包的递归的函数模板。
template<typename T,typename ...Args>
void print(T arg,Args... args)
{
//cout<<"参数: "<<arg<<endl;//显示本次再看的参数
show(arg);//把参数用于表白
cout<<"还有"<<sizeof...(args)<<"个参数未展开。"<<endl;//显示为再看参数的告诉
print(args...);//进行展开参数。
}
template <typename ...Args>
void func(const string&str,Args...args)
{
cout<<str<<endl;//表白之前,喊句口号;
print(args...);
cout<<"表白完成\n";
}
int main(void)
{
//print("冰冰",8,"西施",3);
func("我是绝世帅哥。","冰冰",8,"西施",3);
}
我是绝世帅哥。
亲爱的冰冰.我是一只傻傻鸟。
还有3个参数未展开。
亲爱的8.我是一只傻傻鸟。
还有2个参数未展开。
亲爱的西施.我是一只傻傻鸟。
还有1个参数未展开。
亲爱的3.我是一只傻傻鸟。
还有0个参数未展开。
递归终止。
表白完成
发表回复