C++17でFold expressionという機能が追加されたらしい。
なんでも
とすると、
と展開される。
#include <iostream>
template<typename... Args> auto add1(Args... val) { // Fold expression // val1 + val2 + val3 + ... return (val + ...); }
template<int... Args> int add2() { // Fold expression // args1 + args2 + args3 + ... return (Args + ...); }
int main() { auto ret1 = add1(1.0, 2.2, 3.f, 4, 5); std::cout << "Sum: " << ret1 << "\n"; int ret2 = add2<1, 2, 3, 4, 5>(); std::cout << "Sum: " << ret2 << "\n"; }