c++17 折叠表达式

本文介绍了C++17中的折叠表达式,这是一种简化参数包处理的方法。折叠表达式分为左折叠和右折叠,根据参数位置和操作数量分为一元和二元。通过举例展示了加法、乘法、减法的折叠应用,并解释了折叠表达式与参数包递归的区别。此外,还推荐了一个用于查看编译过程的在线工具C++Insights。
摘要由CSDN通过智能技术生成

转载:

C++17之『折叠表达式』_buknow的博客-CSDN博客

重点:

查看代码编译过程的网站:C++ Insights (cppinsights.io)

1.使用折叠表达式可以简化对C++11中引入的参数包的处理。

2.根据参数包的位置分为左折叠和右折叠,

3. 点在参数左边叫左折叠(...+t),点在参数右边叫右折叠(t+...)
4.根据操作的对象数量分为一元折叠和二元折叠.

5.左折叠和右折叠并不相同,加法和乘法的时候相同,减法和除法则不同

一:左折叠

1.一元左折叠

空参数会报错。

 采用二元折叠,就是必须要有一个初始值,对于加法来说采用0做初始值使整个运算不受影响。

 对于乘法采用1作为初始值。

二:右折叠

一元右折叠

 同理,需要采用二元表达式解决空参数问题

三:左折叠和右折叠的减法

四:lamada和逗号表达式结合

五:折叠表达式的原理和参数包递归原理不同

折叠表达相当于特例化一个模板,这个模板的参数根据实例化参数的个数来表示

 而递归是特例化所有参数模板。

 查看代码编译过程的网站:C++ Insights (cppinsights.io)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值