TMP: Wie verallgemeinert man ein kartesisches Produkt von Vektoren?

Es gibt eine ausgezeichnete C ++ - Lösung (eigentlich 2 Lösungen: eine rekursive und eine nicht rekursive), um eineKartesisches Produkt eines Vektors ganzzahliger Vektoren. Zur Veranschaulichung / Vereinfachung wollen wir uns nur auf das konzentrierennicht rekursive Version.

Meine Frage ist, wie man diesen Code mit Vorlagen verallgemeinern kann, um eine zu nehmenstd::tuple von homogenen Vektoren, die so aussehen:

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

und erzeugen einen homogenen Vektor vontuple

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

Wenn es das Leben leichter macht, nehmen wir an, dass die internen Vektoren in der Eingabe jeweils homogen sind. Also sind solche Eingabennicht erlaubt: {{5,"baz"}{'c',-2}}

BEARBEITEN Eingabe von gezackten Vektor in Tupel geändert

Antworten auf die Frage(2)

Ihre Antwort auf die Frage