(talvez o título já se enquadre no problema XY...)
Dada esta função modelada:
template <typename T, typename U, typename V, typename W>
void MyFunc()
{
// stuff...
}
Gostaria de chamá-lo para todas as combinações dadas de tipos. Por exemplo, gostaria de chamar para:
- T: char, int, longo longo
- U: flutuar, duplo
- V: std::uint64_t, std::string_view
- W: int, MeuEnum1, MeuEnum2, MeuEnum3
Em pseudocódigo, ficaria assim:
foreach (t in { char, int, long long })
{
foreach (u in { float, double })
{
foreach (v in { std::uint64_t, std::string_view })
{
foreach (w in { int, MyEnum1, MyEnum2, MyEnum3 })
{
MyFunc<t, u, v, w>();
}
}
}
}
Como posso conseguir isso?
Acredito que truques/padrões de modelos variáveis, como tuplas ou "listas de tipos", são o caminho a seguir, mas não consegui resolvê-los.