#include <algorithm>
#include <iostream>
auto factorial(long n) -> long {
long result = 1;
for (long i = 2; i <= n; i++) {
result *= i;
}
return result;
}
int main() {
const std::function<long(long)> plus2 = [](auto i) { return i + 2; };
const std::function<char(long)> tochar = [](auto i) { return '*'; };
auto is_even = [](long a) { return a % 2 == 0; };
auto is_below_10 = [](long a) { return a < 10; };
auto multiply = [](long a, long b) { return a * b; };
auto mapped_generator =
range(5) | plus2 | factorial | tochar;
auto evens =
range(50) && is_even && is_below_10;
auto factorial =
range(2, 6) >> multiply;
auto limited_generator =
range(0, infinity) != 50;
}
generator< long, long > range(long begin, long end, long step=1) noexcept
Generate a sequence of integers in a specified range.
const sentinel infinity
A sentinel that tells numeric generators to run forever.