В некоторых языках наблюдаю такой тип выборки последовательностей (код условный):
fun getSequence(params): Sequence {
while (true) {
value = toDoSomething(params);
yield value;
}
}
...
for (auto value: getSequence(something)) {
...
}
Для С++ похожая схема реализуется с передачей лямбды в параметр, выглядит так:
void getSequence(auto params, const auto &task) {
while (true) {
auto value = toDoSomething(params);
task(value);
}
}
...
getSequence(something, [&](const auto &value) {
...
});