Ленивое преобразование в C ++

У меня есть следующий фрагмент Python, который я хотел бы воспроизвести с помощью C ++:

from itertools import count, imap

source = count(1)
pipe1 = imap(lambda x: 2 * x, source)
pipe2 = imap(lambda x: x + 1, pipe1)
sink = imap(lambda x: 3 * x, pipe2)
for i in sink:
    print i

мы слышали оПовысить Феникс, но я не могне найти пример ленивогоtransform ведет себя так же, как в Python.imap

Изменить: чтобы прояснить мой вопрос, идея заключается не только в применении функций в последовательности, используяfor, а скорее, чтобы иметь возможность использовать алгоритмы, такие какstd::transform на бесконечных генераторах. Способ составления функций (на более функциональном языке, таком как диалект) также важен, поскольку следующим шагом является составление функций.

Обновление: спасибо bradgonesurfing, David Brown и Xeo за потрясающие ответы! Я выбрал Xeo 'потому что этоЭто самый лаконичный вариант, и он дает мне то, что я хотел, но ДэвидЭто было очень важно для понимания концепций. Кроме того, Bradgonesurfing 's Boost :: Range :).

Ответы на вопрос(5)

Ваш ответ на вопрос