#include #include typedef bool (*gen_f)(size_t *i); gen_f from_to(size_t from, size_t to) { size_t i = from; bool g(size_t *j) { if (i <= to) { *j = i++; return true; } else { return false; } } return g; } int main(int argc, char **argv) { gen_f gen = from_to(5, 7); size_t i; while (gen(&i)) { printf("%ld\n", i); } return 0; }