TMP: ¿Cómo generalizar un Producto Cartesiano de Vectores?

Hay una excelente solución de C ++ (en realidad 2 soluciones: una recursiva y una no recursiva), a unaProducto cartesiano de un vector de vectores enteros.. Para propósitos de ilustración / simplicidad, concentrémonos en elversión no recursiva.

Mi pregunta es, ¿cómo se puede generalizar este código con plantillas para tomar unastd::tuple De vectores homogéneos que se ven así:

{{2,5,9},{"foo","bar"}}

y generar un vector homogéneo detuple

{{2,"foo"},{2,"bar"},{5,"foo"},{5,"bar"},{9,"foo"},{9,"bar"}}

Si facilita la vida, supongamos que los vectores internos en la entrada son homogéneos. Así que entradas como esta sonNo permitido: {{5,"baz"}{'c',-2}}

EDITAR se cambió la entrada del vector irregular a una tupla

Respuestas a la pregunta(2)

Su respuesta a la pregunta