diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-12-20 02:24:11 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-12-20 02:24:11 +0000 |
commit | d2fa766ad03ebb5e5170c7593ade7c322fe174e8 (patch) | |
tree | 8b9fb3ac9db5e439bc1d64886e34277b46140de2 /clang/lib/Parse/ParseTemplate.cpp | |
parent | 17a06b7efab559f0ae8df678524d6e3c3dfd3d52 (diff) | |
download | bcm5719-llvm-d2fa766ad03ebb5e5170c7593ade7c322fe174e8.tar.gz bcm5719-llvm-d2fa766ad03ebb5e5170c7593ade7c322fe174e8.zip |
Introduce a new type, PackExpansionType, to capture types that are
pack expansions, e.g. given
template<typename... Types> struct tuple;
template<typename... Types>
struct tuple_of_refs {
typedef tuple<Types&...> types;
};
the type of the "types" typedef is a PackExpansionType whose pattern
is Types&.
This commit introduces support for creating pack expansions for
template type arguments, as above, but not for any other kind of pack
expansion, nor for any form of instantiation.
llvm-svn: 122223
Diffstat (limited to 'clang/lib/Parse/ParseTemplate.cpp')
-rw-r--r-- | clang/lib/Parse/ParseTemplate.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Parse/ParseTemplate.cpp b/clang/lib/Parse/ParseTemplate.cpp index 333d72a754c..d38d0599ac2 100644 --- a/clang/lib/Parse/ParseTemplate.cpp +++ b/clang/lib/Parse/ParseTemplate.cpp @@ -1045,6 +1045,11 @@ bool Parser::ParseTemplateArgumentList(TemplateArgList &TemplateArgs) { while (true) { ParsedTemplateArgument Arg = ParseTemplateArgument(); + if (Tok.is(tok::ellipsis)) { + SourceLocation EllipsisLoc = ConsumeToken(); + Arg = Actions.ActOnPackExpansion(Arg, EllipsisLoc); + } + if (Arg.isInvalid()) { SkipUntil(tok::comma, tok::greater, true, true); return true; |