Gostaria de construir um tipo que seja uma tupla da mesma classe com diferentes tipos de argumentos de modelo. Quero dizer:
Imagine que temos uma aula
template<class Arg>
class A
{
//.... details
}
Quero definir algo como:
template<class... Args>
struct construct_tuple
{
//assume I can access Args[...]
using type = std::tuple<A<Args[0]>, A<Args[1]>, ..., A<Args[n]>>;
}
Poderia ajudar por favor?
Acredito que pode haver uma solução iterando os argumentos variados e usando a conexão entre tipos de tuplas ou talvez usando algum outro TMP, por exemplo, std::enable_if
ou std::conditional_t
.
Você só precisa usar a expansão do pacote, usando:
Expandirá para:
Embora seu código não tente construir nada, ele compilará e fornecerá o que você deseja.