diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-08-28 20:31:08 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-08-28 20:31:08 +0000 |
commit | 01afeeff1dc780e577fb6ebc0919ce3a92fd8bf1 (patch) | |
tree | 79b5c5eb1ef4aa106bc5dec321e81de1ee64281d /clang/lib/Sema/SemaExpr.cpp | |
parent | d65d22a0c5202ed65e8f54834c34f9c12dca430b (diff) | |
download | bcm5719-llvm-01afeeff1dc780e577fb6ebc0919ce3a92fd8bf1.tar.gz bcm5719-llvm-01afeeff1dc780e577fb6ebc0919ce3a92fd8bf1.zip |
Implement template instantiation for member class templates.
When performing template instantiation of the definitions of member
templates (or members thereof), we build a data structure containing
the template arguments from each "level" of template
instantiation. During template instantiation, we substitute all levels
of template arguments simultaneously.
llvm-svn: 80389
Diffstat (limited to 'clang/lib/Sema/SemaExpr.cpp')
-rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 44c5a3a1b7a..91c1fa5a122 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -2473,14 +2473,14 @@ Sema::OwningExprResult Sema::BuildCXXDefaultArgExpr(SourceLocation CallLoc, Expr *UninstExpr = Param->getUninstantiatedDefaultArg(); // Instantiate the expression. - const TemplateArgumentList &ArgList = getTemplateInstantiationArgs(FD); + MultiLevelTemplateArgumentList ArgList = getTemplateInstantiationArgs(FD); // FIXME: We should really make a new InstantiatingTemplate ctor // that has a better message - right now we're just piggy-backing // off the "default template argument" error message. InstantiatingTemplate Inst(*this, CallLoc, FD->getPrimaryTemplate(), - ArgList.getFlatArgumentList(), - ArgList.flat_size()); + ArgList.getInnermost().getFlatArgumentList(), + ArgList.getInnermost().flat_size()); OwningExprResult Result = SubstExpr(UninstExpr, ArgList); if (Result.isInvalid()) |