Index: lib/Sema/SemaCXXScopeSpec.cpp =================================================================== --- lib/Sema/SemaCXXScopeSpec.cpp +++ lib/Sema/SemaCXXScopeSpec.cpp @@ -702,7 +702,8 @@ // }; if (getLangOpts().MSVCCompat) { DeclContext *DC = LookupCtx ? LookupCtx : CurContext; - if (DC->isDependentContext() && DC->isFunctionOrMethod()) { + if (DC->isDependentContext() && DC->isFunctionOrMethod() && + isa(DC->getParent())) { SS.Extend(Context, &Identifier, IdentifierLoc, CCLoc); return false; } Index: test/SemaTemplate/ms-lookup-template-base-classes.cpp =================================================================== --- test/SemaTemplate/ms-lookup-template-base-classes.cpp +++ test/SemaTemplate/ms-lookup-template-base-classes.cpp @@ -460,3 +460,11 @@ int x = f(); }; } + +namespace function_template_undef_impl { +template +void f() { + Undef::staticMethod(); // expected-error {{use of undeclared identifier 'Undef'}} + UndefVar.method(); // expected-error {{use of undeclared identifier 'UndefVar'}} +} +}