https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104476
Bug ID: 104476 Summary: using-decl shadowed by member function when in incomplete-class context Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: ppalka at gcc dot gnu.org Target Milestone: --- We reject the following valid testcase: struct A { static void f(); }; struct B : A { using A::f; // #1 static void f(int); // #2 auto g() -> decltype(f()); // Call should be accepted via #1, instead rejected }; with <stdin>:9:25: error: no matching function for call to ‘B::f()’ <stdin>:8:15: note: candidate: ‘static void B::f(int)’ <stdin>:8:15: note: candidate expects 1 argument, 0 provided <stdin>:9:25: error: no matching function for call to ‘B::f()’ <stdin>:8:15: note: candidate: ‘static void B::f(int)’ <stdin>:8:15: note: candidate expects 1 argument, 0 provided Yet if we swap the order of the declarations #1 and #2, then we accept the testcase.