#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;
}
C++11>可變模板參數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.