C++11的可变参数模板,对参数进行了高度的泛化,可以表示
- 任意数目
- 任意类型
语法为 class或者typename后面加…
Template<class ... T>void func(T ... args)
{
cout<<”num is”<<sizeof ...(args)<<endl;
}
T 叫模板参数包
args 叫函数参数包
省略号的作用
- 说明一个包含0到n任意模板参数的参数包
- 在模板定义的右边,可以将参数展成一个个独立的参数
C++11可以使用递归函数的方式展开参数包,获得每个参数的值。那么就需要
- 一个参数包展开的函数
- 一个递归终止的函数
两个函数若是重载,谁比较特化,就调用谁
int maximum(int n){
return n;
}
template<typename... Args>
int maximum(int n, Args...args)
{
return std::max(n, maximum(args...));
}
版权声明:本文为niu91原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。