diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-02-11 18:16:40 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-02-11 18:16:40 +0000 |
commit | 62cb18dd11472965e03374d40bc27d650bc331b6 (patch) | |
tree | 654a40f9c9f2cbe7baaa5e32496ddef569431851 /lib/Sema/SemaTemplate.cpp | |
parent | 7151bbb55c8a437073e42f74348c3fd5f1d5b410 (diff) |
Allow the use of default template arguments when forming a class
template specialization (e.g., std::vector<int> would now be
well-formed, since it relies on a default argument for the Allocator
template parameter).
This is much less interesting than one might expect, since (1) we're
not actually using the default arguments for anything important, such
as naming an actual Decl, and (2) we'll often need to instantiate the
default arguments to check their well-formedness. The real fun will
come later.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64310 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaTemplate.cpp')
-rw-r--r-- | lib/Sema/SemaTemplate.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/Sema/SemaTemplate.cpp b/lib/Sema/SemaTemplate.cpp index 86f1e2017f..b4436a2c3c 100644 --- a/lib/Sema/SemaTemplate.cpp +++ b/lib/Sema/SemaTemplate.cpp @@ -685,7 +685,7 @@ bool Sema::CheckTemplateArgumentList(TemplateDecl *Template, bool Invalid = false; if (NumArgs > NumParams || - NumArgs < NumParams /*FIXME: default arguments! */) { + NumArgs < Params->getMinRequiredArguments()) { // FIXME: point at either the first arg beyond what we can handle, // or the '>', depending on whether we have too many or too few // arguments. @@ -698,7 +698,8 @@ bool Sema::CheckTemplateArgumentList(TemplateDecl *Template, isa<FunctionTemplateDecl>(Template)? 1 : isa<TemplateTemplateParmDecl>(Template)? 2 : 3) << Template << Range; - + Diag(Template->getLocation(), diag::note_template_decl_here) + << Params->getSourceRange(); Invalid = true; } |