原来的模板参数可以使类和函数的参数类型“任意化”,如果再加上“参数个数的任意化”,那么在参数方面的设计手段就基本上齐备了,有了variadic template 显然可以让设计出来的函数或是类有更大的复用性
。关键词 …
eg:
1.对输入不同个数不同类型参数打印
递归实现
void printX() {} //当最后没有参数时结束打印(什么也不做),要写在前面以便递归最后一次调用
template <typename T, typename… Types> //Type表示任意多个不同的类型名
void printX(const T &firstArg, const Types&… args) //args表示任意多个Types类型的参数,因为Types表示任意多个不同的类型,所以args就是任意多个不同类型的参数
{
cout<<firstArg<<endl; //将传入printX的参数分为第一个参数和剩余参数,将第一个参数输出
printX(args…); //将剩余参数递归的传递给printX
}