在变长模板中,我们可以使用递归的方式来计算和类型。下面是一个示例代码:
#include
// 基本情况:当没有元素时,返回0
template
T sum() {
return 0;
}
// 递归情况:将第一个元素与剩余元素的和相加
template
T sum(T first, Args... args) {
return first + sum(args...);
}
int main() {
int s1 = sum(1, 2, 3, 4, 5); // 15
double s2 = sum(1.5, 2.5, 3.5); // 7.5
std::cout << s1 << std::endl;
std::cout << s2 << std::endl;
return 0;
}
在上面的示例中,我们定义了两个函数模板。sum()
函数是一个递归函数,它负责计算变长参数的和类型。当没有元素时,sum()
函数返回0作为基本情况。当有元素时,sum()
函数将第一个元素与剩余元素的和相加,并通过递归调用自身来处理剩余元素。
在 main()
函数中,我们分别使用整数和浮点数来测试 sum()
函数。输出结果分别为15和7.5,验证了变长模板中的和类型的计算。
下一篇:变长模板、范围、C++