c++可变参数模板

本文深入探讨了C++的可变参数模板,包括如何在函数和类中使用。讲解了通过逗号表达式展开、递归函数、模板偏特化、继承以及组合方式来展开参数包,并提供了一个创建委托的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可变模板参数函数

1.逗号表达式展开参数包

template<class F, typename... Args>
void expand(const F& f, Args... args)
{
	initializer_list<int>{(f(std::forward< Args>(args)), 0)...};
}
//expand([](auto i){cout << i << endl; }, 1, 2.0, ”test”);

2.递归函数方式展开

template <class T>
void printarg(T&& t)
{
	std::cout << t << std::endl;
}

//终止递归
template<typename T>
void processValues(T &&arg)
{
	printarg(std::forward<T>(arg));
}

template<typename T, typename... Ts>
void processValues(T &&arg, Ts&& ...args)
{
	printarg(std::forward<T>(arg));
	processValues(std::forward<Ts>(args)...);
}

可变模板参数类

1.模版偏特化和递归方式来展开参数包

//前向声明
template<typename... Args>
struct sum;

//基本定义
templ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值