diff options
author | Anders Carlsson <andersca@mac.com> | 2009-06-12 22:30:13 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-06-12 22:30:13 +0000 |
commit | 9c4c5c8e174e203da5f841f187bd290a76b34710 (patch) | |
tree | 6b829063dfb57fd5629538138ed081a9f6986ee3 /lib/Sema/SemaTemplate.cpp | |
parent | 6d845ae1baf77691bca080e0762a1d45ee017f70 (diff) |
Parameter packs can't have default arguments.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73262 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaTemplate.cpp')
-rw-r--r-- | lib/Sema/SemaTemplate.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/Sema/SemaTemplate.cpp b/lib/Sema/SemaTemplate.cpp index 8058ad2d63..00d3e54565 100644 --- a/lib/Sema/SemaTemplate.cpp +++ b/lib/Sema/SemaTemplate.cpp @@ -187,6 +187,15 @@ void Sema::ActOnTypeParameterDefault(DeclPtrTy TypeParam, = cast<TemplateTypeParmDecl>(TypeParam.getAs<Decl>()); QualType Default = QualType::getFromOpaquePtr(DefaultT); + // C++0x [temp.param]p9: + // A default template-argument may be specified for any kind of + // template-parameter that is not a template parameter pack. + if (Parm->isParameterPack()) { + Diag(DefaultLoc, diag::err_template_param_pack_default_arg); + Parm->setInvalidDecl(); + return; + } + // C++ [temp.param]p14: // A template-parameter shall not be used in its own default argument. // FIXME: Implement this check! Needs a recursive walk over the types. |