三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

折叠表达式:一元折叠,二元折叠

折叠表达式:一元折叠,二元折叠

如你所知,在 C++17 中,引入了折叠表达式 的新特性。可以通过二元运算符对形参包进行统一的运算。

折叠表达式是 C++17 引入的一种新特性,它允许对模板参数包进行递归操作,能够优雅且高效地处理可变参数模板中的参数。这种表达式可以应用于对参数包的每个元素执行相同的计算或比较操作。

有如下四种形式:

  • (形参包 op ...)
  • (... op 形参包)
  • (形参包 op ... 初始值)
  • (初始值 ... op 形参包)

一元折叠,二元折叠

我们将没有初始值的形式叫做一元折叠表达式,反之则为二元折叠表达式。

一元折叠

template <typename... Args> auto getSum(Args... args) { return (args + ...); }

二元折叠

template <typename... Args> auto getSum(Args... args) { // 设定初始值为0 return (args + ... + 0); }
← 返回列表