Consider:
template<typename T1, typename T2>
struct Test {
};
template<typename T1>
struct Test<T1, int> {
};
Now How to enumerate the template Parameters of the ClassTemplateSpecialization Test<T1, int>? (Should be T1).
This is particularly needed for class template partial specialization as function templates can't be partially specialized.