Существует отличное решение на С++ (фактически 2 решения: рекурсивное и нерекурсивное), в декартово произведение вектора целых векторов. Для иллюстрации/простоты давайте просто сосредоточимся на нерекурсивной версии.
Мой вопрос: как можно обобщить этот код с шаблонами, чтобы принять std::tuple
однородных векторов, который выглядит так:
{{2,5,9},{"foo","bar"}}
и порождают однородный вектор tuple
{{2,"foo"},{2,"bar"},{5,"foo"},{5,"bar"},{9,"foo"},{9,"bar"}}
Если это облегчит жизнь, допустим, что внутренние векторы на входе являются однородными. Поэтому такие входные данные не разрешены: {{5,"baz"}{'c',-2}}
РЕДАКТИРОВАТЬ изменил входной сигнал из неровного вектора на кортеж