0


c++17 折叠表达式

转载:

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

重点:

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

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

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

  1. 点在参数左边叫左折叠(...+t),点在参数右边叫右折叠(t+...)

4.根据操作的对象数量分为一元折叠和二元折叠.

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

一:左折叠

1.一元左折叠

空参数会报错。

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

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

二:右折叠

一元右折叠

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

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

四:lamada和逗号表达式结合

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

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

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

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

标签: c++

本文转载自: https://blog.csdn.net/qq_38409301/article/details/122276764
版权归原作者 qq_1410888563 所有, 如有侵权,请联系我们删除。

“c++17 折叠表达式”的评论:

还没有评论