#include #include #include template constexpr long long sum(Ts... values) { static_assert((std::is_integral_v && ...), "integer inputs only"); return (0LL + ... + static_cast(values)); } template constexpr bool all_positive(Ts... values) { return ((values > 0) && ...); } int main() { static_assert(sum() == 0); static_assert(sum(1, 2, 3) == 6); static_assert(all_positive()); assert(all_positive(1, 2, 3)); assert(!all_positive(1, 0, 3)); std::cout << sum() << ' ' << sum(1, 2, 3) << '\n'; }