C++11----模板可变参数
在 C++ 中,普通模板只能接收固定数量的模板参数,比如:
template<typename T1, typename T2> void func(T1 a, T2 b);
但如果你希望函数能接收任意数量、任意类型的参数,比如:
func(1); func(1, 2.5); func(1, "hello", 3.14);
那普通模板就做不到了。
所以 C++11 引入了 —— 模板参数包(parameter pack)。
用法
//注意模板参数的书写格式,以及使用方法
template<class ...Args>
void print(Args... args)
{for (int i = 0; i < sizeof ...(args); i++){cout << i << endl;}
}print(1,'s',"aaaa");
如果想要打印具体参数,要使用编译递归的书写方式:
void print()//递归终点
{cout << endl;
}
template<class T,class ...Args>void print(T value, Args ...args)
{cout << value << " ";print(args...);
}prin