可变参数模板是C++11的重要特性。可变参数模板可以分为参数个数可变,参数类型可变。可变参数模板可以利用在函数模板和类模板上。可变参数模板函数一般采用递归展开的方式。可变参数模板类可以采用递归展开、递归继承、递归复合三种方式。
下面将给出一个基于可变参数模板的打印函数,该函数可以打印任意个输入参数。
//递归终止函数
void print(){}
//可变参数模板函数定义
template<typename T, typename... Types>
void print(const T& firstArg, const Types&... args){
cout << firstArg << endl;
print(args...);
}
//测试
void test(){
print(7.5, "hello", bitset<16>(377), 42);
}