Index: cfe/trunk/lib/Sema/SemaTemplateVariadic.cpp =================================================================== --- cfe/trunk/lib/Sema/SemaTemplateVariadic.cpp +++ cfe/trunk/lib/Sema/SemaTemplateVariadic.cpp @@ -604,7 +604,7 @@ // Template argument deduction can extend the sequence of template // arguments corresponding to a template parameter pack, even when the // sequence contains explicitly specified template arguments. - if (!IsFunctionParameterPack) { + if (!IsFunctionParameterPack && CurrentInstantiationScope) { if (NamedDecl *PartialPack = CurrentInstantiationScope->getPartiallySubstitutedPack()){ unsigned PartialDepth, PartialIndex; Index: cfe/trunk/test/SemaCXX/cxx1y-variable-templates_top_level.cpp =================================================================== --- cfe/trunk/test/SemaCXX/cxx1y-variable-templates_top_level.cpp +++ cfe/trunk/test/SemaCXX/cxx1y-variable-templates_top_level.cpp @@ -458,3 +458,9 @@ template<> int g; // expected-error {{no variable template matches specialization; did you mean to use 'g' as function template instead?}} } +#ifndef PRECXX11 +template struct Variadic_t { }; +template Variadic_t Variadic; +auto variadic1 = Variadic<>; +auto variadic2 = Variadic; +#endif