[
Example 2: 
template<typename T> concept C = true;
template<typename T> struct X { };
template<typename T> struct X<T*> { };          
template<C T> struct X<T> { };                  
 
Both partial specializations are more specialized than the primary template
.#1 is more specialized because the deduction of its template arguments
from the template argument list of the class template specialization succeeds,
while the reverse does not
.#2 is more specialized because the template arguments are equivalent,
but the partial specialization is more constrained (
[temp.constr.order])
. — 
end example]