摺疊逗號

需要在引數包中的每個元素上執行特定功能是一種常見操作。使用 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), ...);
}

不需要神祕的樣板。