C++17中的折叠表达式实现
C++11 提供了可变模板参数包, 使函数可以接受任意数量的参数. 但在 C++11中展开参数包稍显麻烦, 而 C++17 的折叠表达式使得展开参数包变得容易, 其基本语法是使用 (…C++17中,折叠表达式支持 32 个操作符:1.左折叠例 1: 左折叠例 2: 右折叠例 1 中, 参数包 …位于操作符的左侧,故尔称为左折叠。通过加上一个数值,折叠就变成了二元折叠,如例 3 所示。对于大多数操作符,空参数包将会引发编译错误。对于 && 或 ||,空参数包是合法的,其中 && 的展开结果为 true,||的展开结果为 false。例 4: 计算指定区间内包含指定数值的个数例 5: 检查插入多个元素是否成功1.对于一元右折叠 (E op …) 具体展开为 E1 op (…左折叠与右折叠的语义并非总是相同的。
下载地址
用户评论