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...));
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章