https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105615
Patrick Palka <ppalka at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |INVALID CC| |ppalka at gcc dot gnu.org Status|UNCONFIRMED |RESOLVED --- Comment #1 from Patrick Palka <ppalka at gcc dot gnu.org> --- 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.