C++11>可變模板參數

可變模板參數


#include <iostream>

//打印可變模板傳入參數個數
template <class... T>
void f1(T...args) 
{
	std::cout << sizeof...(args) << std::endl;
}

//////////////展開參數包

//1.遞歸函數 方式展開參數包
//參數包Args...在展開的過程中遞歸調用自己,每調用一次參數包中的參數就會少一個,直到所有的參數都展開爲止,當沒有參數時,則調用非模板函數f2終止遞歸過程
//遞歸終止函數
void f2()
{
	std::cout << "empty" << std::endl;
}
//展開函數
template <class T,class...Args>
void f2(T head,Args...rest)
{
	std::cout << "parameter" << head << std::endl;
	f2(rest...);
}
//求和例子
template <class T>
T add(T t)
{
	return t;
}
template <class T,class...args>
T add(T t,args...rest)
{
	return t + add<T>(rest...);
}

//2.逗號表達式展開參數
int main()
{
	f1(1, 2, 3, 4, 5, 6);
	f2(1, 2, 3, 4);
	std::cout << add(1, 2, 3, 4) << std::endl;

	system("pause");
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章