模板函数
示例代码1
#include <iostream>
using namespace std;
/* 递归调用的终止条件 */
void test_variadic_templete_func()
{
cout<<"The end!!!"<<endl;
}
/* 不定参函数模板的使用 采用的是递归的方式 */
template<typename T,typename ... Types>
void test_variadic_templete_func(const T &frist,const Types&... args)
{
cout<<frist<<endl;
cout<<"variadic template function sizeof Usage:"<<sizeof...(args)<<endl;
test_variadic_templete_func(args...);
}
int main(int argc, char const *argv[])
{
test_variadic_templete_func("hhaah",112,333,222,999,000);
return 0;
}
采用递归的方式拆解函数模板中的不定参。一定要有一个特化模板去做终止条件。
程序运行截图
示例代码2
#include <iostream>
namespace max_test
{
template<typename T>
T max( T n)
{
return n;
}
template<typename T, typename ... Args>
T max(T n,Args ... args)
{
return std::max(n,max(args...));
}
} // namespace max_test
int main(int argc, char const *argv[])
{
std::cout<< "The max is "<<max_test::max(1,2,3,4,5,6,7,22)<<std::endl;
return 0;
}