[
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]