Index: cfe/trunk/lib/Sema/SemaTemplate.cpp =================================================================== --- cfe/trunk/lib/Sema/SemaTemplate.cpp +++ cfe/trunk/lib/Sema/SemaTemplate.cpp @@ -4434,7 +4434,7 @@ // If the argument type is dependent, instantiate it now based // on the previously-computed template arguments. - if (ArgType->getType()->isDependentType()) { + if (ArgType->getType()->isInstantiationDependentType()) { Sema::InstantiatingTemplate Inst(SemaRef, TemplateLoc, Param, Template, Converted, SourceRange(TemplateLoc, RAngleLoc)); Index: cfe/trunk/test/SemaCXX/alias-template.cpp =================================================================== --- cfe/trunk/test/SemaCXX/alias-template.cpp +++ cfe/trunk/test/SemaCXX/alias-template.cpp @@ -179,3 +179,13 @@ }; static_assert(__is_same(S<3>::U, X[2]), ""); // expected-error {{static_assert failed}} } + +namespace PR39623 { +template +using void_t = void; + +template > +int sfinae_me() { return 0; } // expected-note{{candidate template ignored: substitution failure}} + +int g = sfinae_me(); // expected-error{{no matching function for call to 'sfinae_me'}} +}