c++11 可变参数模板,模板函数可以表示0到任意个数、任意类型的参数。但是,要提取模板中的参数,则需要不断的展开。
利用递归的方式展开的一个方法:
#include<iostream>
int end_fun(int& a){
return a;
}
template<typename T,typename... Args>
int end_fun(T& arg,Args... args){
return arg + end_fun(args...);
}
int main(int argc,char *argv[]){
char a = 'a';
int b = 2;
int c = 3;
int res = end_fun(a,b,c);
std::cout<<"Res: "<<res<<std::endl;
}
在上述的递归展开方式中,需要一个模板函数,模板函数作为入口,同时需要定义一个特化的函数,作为递归的终点。
后续将介绍,利用特化的方式实现展开的方式。