C++11 可变参数

C++11的可变参数模板,对参数进行了高度的泛化,可以表示

  • 任意数目
  • 任意类型
    语法为 class或者typename后面加…
Template<class ... T>void func(T ... args)
{
	cout<<”num is”<<sizeof ...(args)<<endl;
}

T 叫模板参数包
args 叫函数参数包

省略号的作用
  1. 说明一个包含0到n任意模板参数的参数包
  2. 在模板定义的右边,可以将参数展成一个个独立的参数
    C++11可以使用递归函数的方式展开参数包,获得每个参数的值。那么就需要
  • 一个参数包展开的函数
  • 一个递归终止的函数

两个函数若是重载,谁比较特化,就调用谁

int maximum(int n){	
	return n;
}
template<typename... Args>
int maximum(int n, Args...args)
{	
	return std::max(n, maximum(args...));
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章