取自 A Tour of C++
1 |
|
C++17 引入了折叠表达式,用于将一个包用二元运算符进行规约操作,有四种形式:
- 一元右折叠:
(E op ...)=> $(E_1 \text{ op } (\dots \text{ op } (E_{N-1} \text{ op } E_N)))$ - 一元左折叠:
(... op E)=> $(((E_1 \text{ op } E_2) \text{ op } \dots) \text{ op } E_N)$ - 二元右折叠:
(E op ... op I)=> $(E_1 \text{ op } (\dots \text{ op } (E_{N-1} \text{ op } (E_N \text{ op } I))))$ - 二元左折叠:
(I op ... op E)=> $((((I \text{ op } E_1) \text{ op } E_2) \text{ op } \dots) \text{ op } E_N)$
进一步了解可参看cppreference