Not sure if title is descriptive, but what I would like is this:
input:
- list of templates(in my case containers) taking 1 (required, can be more optional) type arguments
- list of types
output:
"cartesian product" where each template in first set is instantiated with every type in second set.
example:
template_list<std::vector, std::set> x type_list<int, double> =>
type_list<std::vector<int>, std::vector<double>, std::set<int>, std::set<double>>
I found this question, but that is about a case when elements of both sets are types.
How to create the Cartesian product of a type list?
I presume that what I want is impossible without macros, but it may be possible that I am missing something.