本篇作为 Understanding variadic templates 的进阶内容,同时,Fold Expressions 也是 C++17 最常用的特性之一。 Fold Expressions 的基本概念 C++11中,参数包只能在需要参数列表的上下文展开,比如函数递归。而递归函数需要终止条件,因此往往需要提供一个同名的函数来终止递归。 举个例子: void print() { std::cout << '\n'; } template<typename F, typename… Args> void print(F first, Args… args) { std::cout << first << ' '; print(args…); } 我们无法在函数主体中展开,例如不能这样做: template<typename… Args> void print(Args… args) { std::cout << … <<… Continue Reading C++17: Simplify Code with Fold Expressions