Transformada perezosa en C ++

Tengo el siguiente fragmento de código de Python que me gustaría reproducir utilizando 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

He oído hablar deImpulsar Phoenix, pero no pude encontrar un ejemplo de un perezosotransform comportándose de la misma manera que Python'simap.

Edición: para aclarar mi pregunta, la idea no es solo aplicar funciones en secuencia usando unfor, sino más bien poder usar algoritmos comostd::transform En generadores infinitos. La forma en que se componen las funciones (en un lenguaje más funcional como el dialecto) también es importante, ya que el siguiente paso es la composición de la función.

Actualización: gracias a bradgonesurfing, David Brown y Xeo por las increíbles respuestas. Elegí Xeo's porque es lo más conciso y me lleva justo donde quería estar, pero David's fue muy importante para que los conceptos se hicieran realidad. Además, la punta de bradgonesurfing Boost :: Range :).

Respuestas a la pregunta(5)

Su respuesta a la pregunta