Leniwa transformacja w C ++

Mam następujący fragment kodu Pythona, który chciałbym odtworzyć przy użyciu 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

Słyszałem oZwiększ Phoenix, ale nie mogłem znaleźć przykładu leniwegotransform zachowywać się tak samo jak Pythonaimap.

Edytuj: aby wyjaśnić moje pytanie, pomysł polega nie tylko na stosowaniu funkcji w sekwencji za pomocą afor, ale raczej aby móc korzystać z takich algorytmówstd::transform na nieskończonych generatorach. Ważny jest także sposób, w jaki funkcje są skomponowane (w bardziej funkcjonalnym języku, takim jak dialekt), ponieważ następnym krokiem jest skład funkcji.

Aktualizacja: dzięki bradgonesurfingowi, Davidowi Brownowi i Xeo za niesamowite odpowiedzi! Wybrałem Xeo, ponieważ jest to najbardziej zwięzły i to sprawia, że ​​jestem dokładnie tam, gdzie chciałem być, ale David był bardzo ważny, aby zrozumieć koncepcje. Również bradgonesurfing's tipped Boost :: Range :).

questionAnswers(5)

yourAnswerToTheQuestion