https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121351
Patrick Palka <ppalka at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Last reconfirmed| |2025-08-01 CC| |ppalka at gcc dot gnu.org See Also| |https://gcc.gnu.org/bugzill | |a/show_bug.cgi?id=119859 Status|UNCONFIRMED |NEW --- Comment #1 from Patrick Palka <ppalka at gcc dot gnu.org> --- Confirmed, started with r15-3740 and indeed very related to PR119859 but not quite the same. One would expect Derived::f to hide the using'd Base::f, but we keep both overloads since we consider them to have different constraints. And after r15-3740 we no longer have the inherited-ness tiebreaker to resolve the ambiguity. template<class T> concept C = true; template<class D> struct Base { void f(auto a) requires C<D>; }; struct Derived : Base<Derived> { using Base::f; void f(auto a) requires C<Derived>; }; int main() { Derived d; d.f(42); }