Let's say we have the following:
template<typename T1, typename T2>
class A {}
template<typename T1, typename T2>
class A<T1*, T2*> {}
template<typename T>
class A<T, T> {}
Now, I know that we need to select the most specialized class, but for A<double*, double*>, there is a ambiguity error for both specializations and my teacher told that they are having the same specialization level. But at the first look, I would have said A<T, T> is more specialized. How exactly did we come to this conclusion? Or how can we say if 2 different specializations are at same level or not?