Variadic templates with fold expressions

#include <iostream>

template<typename... Args>
auto sum_all(Args... args) {
    return (args + ...);
}

template<typename... Args>
auto any_true(Args... args) {
    return (args || ...);
}

template<typename... Args>
void print_all(Args... args) {
    ((std::cout << args << " "), ...);
    std::cout << "\n";
}

int main() {
    auto sum = sum_all(1, 2, 3, 4, 5);
    auto res = any_true(false, true, false);
    print_all("Hello", 42, 3.14, 'A');
    return 0;
}

Details
– The compiler expands the fold at compile time into a normal expression.
– The precalculation depends on whether the arguments are known at compile time.