https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105615
--- Comment #2 from Pilar Latiesa <pilarlatiesa at gmail dot com> --- (In reply to Patrick Palka from comment #1) > Constraint subsumption is specified in terms of the normal form. When the > concept C is made independent of the template parameter, the normal forms of > C<T> and C<U> are the same, so the constraint (C<T> && C<U>) no longer > strictly subsumes C<T>, hence the second overload is no longer considered > more specialized than the first. So I believe GCC (and Clang and MSVC) are > correct to diagnose the call as ambiguous. I see. Thanks for the explanation Patrick. By the way, neither Clang nor MSVC handle the dependent case correctly.