What is the formal name in type theory of the operation that creates a "matrix of types" from product types (such as std::tuple in C++)?
For example if we consider std::tuple<int, float, char> t1
and std::tuple<std::string, double> t2
(in C++, but the same question remains for any product type in any language), what would the name of the operation that would construct the following matrix of product types:
int, std::string
int, double
float, std::string
float, double
char, std::string
char, double
std::tuple<std::tuple<int, std::string>, std::tuple<int, double>, std::tuple<float, std::string>, std::tuple<float, double>, std::tuple<char, std::string>, std::tuple<char, double>>
? $\endgroup$