C++的可变参数模板允许你创建接受任意数量参数的函数或类。为了实现可变参数模板,你需要使用两个C++11特性:参数包(parameter pack)和展开表达式(variadic expansion)。下面是一个简单的示例,展示了如何使用可变参数模板实现一个函数,该函数可以计算其参数的和。
#include <iostream>
// 定义一个可变参数模板函数,用于计算参数的和
template <typename... Args>
auto sum(Args... args) -> decltype(args...) {
return (... + args);
}
int main() {
// 使用可变参数模板函数计算参数的和
std::cout << "Sum of 1, 2, and 3: " << sum(1, 2, 3) << std::endl;
std::cout << "Sum of 4, 5, 6, and 7: " << sum(4, 5, 6, 7) << std::endl;
return 0;
}
在这个示例中,我们定义了一个名为sum
的函数模板,它接受任意数量的参数。我们使用typename... Args
表示参数包,其中Args
是一个可变参数类型列表。decltype(args...)
表示返回类型,它根据传递给函数的实际参数类型推断出来。
在函数体中,我们使用展开表达式(... + args)
将参数包中的所有参数相加。这个表达式会将参数包中的每个参数依次添加到前面的参数上,直到最后一个参数。
在main
函数中,我们调用sum
函数并传递不同数量的参数,以演示可变参数模板的用法。