前言
可变参数模板是C++11及之后才开始使用,学校的老古董编译器不一定能用
相信大家在刚入门c/c++时都接触过printf函数
printf用于将数据格式化输出到屏幕上,它的参数非常有意思,可以支持任意数量,任意类型的多参数.而如果我们想实现类似这种的传参,在C里似乎并不支持
c++11提出了可变模板参数来解决这一问题
语法
匹配优先级
sizeof操作符
访问可变模板参数数据
1.递归式展开
void _fun() {
return;
}
template<class T, class ...Args >
void _fun(T t, Args ... args) {
cout << t << endl;
_fun(args...);
}
template<class ...Args>
void fun(Args... args) {
_fun(args...);
}
int main() {
fun(1,"123456",5.5);
system("pause");
}
2.逗号表达式型
template <class T>
void PrintArg(T t) {
cout << t << " "; }
//展开函数
template <class ...Args>
void ShowList(Args... args) {
int arr[] = { (PrintArg(args), 0)... };
cout << endl; }
int main()
{
ShowList(1);
ShowList(1, 'A');
ShowList(1, 'A', std::string("sort"));
return 0; }
感谢观看