Расширение пакета шаблонов Variadic

ВАндрей рассказывает о GoingNative 2012 он рассказывает о шаблонах Variadic и объясняет в одном из примеров на примере того, как работают расширения пакета параметров. Будучи довольно новым для этого предмета, мне было довольно трудно следить за тем, как работает каждый случай. Кто-нибудь может объяснить, как работает расширение при каждом вызове функцииgun?

template<class... Ts> void fun(Ts... vs) {
    gun(A<Ts...>::hun(vs)...);
    gun(A<Ts...>::hun(vs...));
    gun(A<Ts>::hun(vs)...);
}

Ответы на вопрос(2)

Ваш ответ на вопрос