Variadic Templates pack expansions
Dentro Palestra de Andrei no GoingNative 2012 ele fala sobre modelos variados e explica em um momento o exemplo abaixo de como as expansões do pacote de parâmetros funcionam. Sendo relativamente novo nesse assunto, achei bastante difícil acompanhar como cada caso funciona. Alguém poderia explicar como a expansão funciona em cada chamada de função degun
?
template<class... Ts> void fun(Ts... vs) {
gun(A<Ts...>::hun(vs)...);
gun(A<Ts...>::hun(vs...));
gun(A<Ts>::hun(vs)...);
}