Using declarations for static member functions


class A {
static void f() {}

class B : public A {
using A::f;

void f() {

The B::f() call creates a DeclRefExpr where the FoundDecl is the CXXMethodDecl A::f(). This is contrary to cases of non-static member functions (where the MemberExpr has a FoundDecl that is a UsingShadowDecl) and non-member functions in general (where the FoundDecl of the DeclRefExpr is a UsingShadowDecl).

Is this a bug? Does anyone know of hand how to fix it?

It does look like a bug. The way to fix it is to trace through Sema and figure out where the found decl is being changed.