摺疊逗號
需要在引數包中的每個元素上執行特定功能是一種常見操作。使用 C++ 11,我們能做的最好的事情是:
template <class... Ts>
void print_all(std::ostream& os, Ts const&... args) {
using expander = int[];
(void)expander{0,
(void(os << args), 0)...
};
}
但是使用 fold 表示式,上面簡化為:
template <class... Ts>
void print_all(std::ostream& os, Ts const&... args) {
(void(os << args), ...);
}
不需要神祕的樣板。