变长模板函数的递归结束过载可以使用重载的方式来解决。具体的解决方法如下:
template
void process(T t) {
// 处理递归结束的情况
// ...
}
template
void process(T t, Args... args) {
// 处理递归调用的情况
// ...
process(args...);
}
template
void process(T t, Args... args) {
// 处理递归调用的情况
// ...
process(args...);
}
template
void process(T t) {
// 处理递归结束的情况
// ...
}
这样,在调用变长模板函数时,如果参数个数为1,会调用递归结束的过载函数,如果参数个数大于1,会调用递归调用的模板函数,从而实现递归的效果。
上一篇:变长模板的正确语法