diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-02-03 20:09:56 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-02-03 20:09:56 +0000 |
commit | fb9e5477faacb94cd5665ab3f2e334451308b0d8 (patch) | |
tree | c1c4ba5cc417b09b1323d92132844120513669da /lib/Sema/SemaTemplate.cpp | |
parent | 0090140bef3e2c22de03f42c515f6de061103801 (diff) |
PR17846, PR17848: don't build a VarTemplateSpecializationDecl for a use of a
variable template until we know what the template arguments actually are.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@200714 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaTemplate.cpp')
-rw-r--r-- | lib/Sema/SemaTemplate.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/Sema/SemaTemplate.cpp b/lib/Sema/SemaTemplate.cpp index bc66fdedb6..a6a3535d68 100644 --- a/lib/Sema/SemaTemplate.cpp +++ b/lib/Sema/SemaTemplate.cpp @@ -2777,10 +2777,13 @@ ExprResult Sema::BuildTemplateIdExpr(const CXXScopeSpec &SS, assert(!R.isAmbiguous() && "ambiguous lookup when building templateid"); // In C++1y, check variable template ids. - if (R.getAsSingle<VarTemplateDecl>()) { - return Owned(CheckVarTemplateId(SS, R.getLookupNameInfo(), - R.getAsSingle<VarTemplateDecl>(), - TemplateKWLoc, TemplateArgs)); + bool InstantiationDependent; + if (R.getAsSingle<VarTemplateDecl>() && + !TemplateSpecializationType::anyDependentTemplateArguments( + *TemplateArgs, InstantiationDependent)) { + return CheckVarTemplateId(SS, R.getLookupNameInfo(), + R.getAsSingle<VarTemplateDecl>(), + TemplateKWLoc, TemplateArgs); } // We don't want lookup warnings at this point. |