template <typename T> struct s { s() { T::x = 0; } }; template <typename T> void f() { T::x = 0; } In this snippet the first x is mapped to a CXXDependentScopeMemberExpr while the second is mapped to a CXXDependentScopeDeclRefExpr. There is a reason underlying this incongruency?