c++

C++可变参数模板怎么实现

小樊
82
2024-11-09 09:04:37
栏目: 编程语言

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函数并传递不同数量的参数,以演示可变参数模板的用法。

0
看了该问题的人还看了