c++17 折叠表达式

c++17 折叠表达式,第1张

c++17 折叠表达式

转载:

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)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5692077.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存