举个简单的例子演示C++可变类型模板,不要使用递归
时间: 2024-10-01 07:05:06 浏览: 10
C++可变类型模板允许你在函数定义时处理不确定数量和类型的参数。这里有一个非递归的例子,展示了如何使用`std::tuple`和`std::apply`来实现:
```cpp
#include <iostream>
#include <tuple> // 使用tuple来存储不确定数量的参数
// 定义一个接受可变数量和类型的参数的模板函数
template<typename... Args>
void print_variadic_args(int index, Args&&... args) {
if constexpr (index == sizeof...(Args)) { // 当所有参数都被迭代完
// 打印参数
(std::cout << ... << std::get<index>(std::forward_as_tuple(args...))) << " 结束" << std::endl;
}
else {
// 递归地处理下一个参数
print_variadic_args(index + 1, std::forward<Args>(args)...);
}
}
int main() {
std::tuple<int, std::string, float, char> params{10, "Hello", 3.14, 'A'};
print_variadic_args<0>(params); // 从第一个元素开始遍历
return 0;
}
```
这个`print_variadic_args`函数通过`sizeof...(Args)`计算参数的数量,然后使用`std::get`访问每个参数。当参数数量达到时,它会停止递归并打印结果。