Suppose you need to have a variadic function and want to add all arguments together. Before C++17, you need two pseudo-recursive functions: template auto add(H head, T... tail) { return head + add(tail...); } template auto add(H head) { return head; } However, C++17 added fold expressions, making it a one-liner: template auto add(H head, T... tail) { return (head + ... + tail); // expands to: head + tail[0] + tail[1] + ... } If we’re willing to abuse operator evaluation rules and fold ex...