That is not allowed. You can do this, however:
template<typename ...> struct typelist {};
template<typename TypeList, int... Is>
struct B; //primary template. Only declaration!
template<typename ... Ts, int ... Is>
struct B<typelist<Ts...>, Is...> //partial specialization
{
//here you know Ts... and Is... Use them!
};
int main()
{
B<typelist<int, double>, 0, 1> b;
return 0;
}