可变参数模板函数
递归展开参数包
//递归结束时参数可以为0 ,或为1, 2等有限个
//template<typename T>
//void print(T t)
//{
// cout << t;
//}
//一种递归结束方式
void print()
{}
template<typename T, typename ...Args>
void print(T head, Args...rest)
{
cout << head << ",";
print(rest...);
}
关键点:
主递归函数里每次展开一个, 然后把余下参数包传递给自己递归
递归结束函数里有定长的参数
利用元组展开参数包
template<size_t I = 0, typename Tuple>
enable_if_t< I == tuple_size_v<Tuple> > print_tp(Tuple t) //当tuple索引I==tuple_size时停止
{
}
template<size_t I = 0, typename Tuple>
enable_if_t< I < tuple_size_v<Tuple> > print_tp(Tuple t)
{
cout << (get&l