]> granicus.if.org Git - clang/commit
Add semantic analysis for the creation of and an AST representation
authorDouglas Gregor <dgregor@apple.com>
Wed, 5 Jan 2011 17:40:24 +0000 (17:40 +0000)
committerDouglas Gregor <dgregor@apple.com>
Wed, 5 Jan 2011 17:40:24 +0000 (17:40 +0000)
commitba68eca7582a62e3e2ff4b0eba1b2b73a6b80895
treecda084548462f9d6bd3fdfe67d210f170baa0f04
parentec5e696a7523db8eae450f4593a80a27f32e530b
Add semantic analysis for the creation of and an AST representation
for template template argument pack expansions. This allows fun such
as:

  template<template<class> class ...> struct apply_impl { /*...*/ };
  template<template<class> class ...Metafunctions> struct apply {
    typedef typename apply_impl<Metafunctions...>::type type;
  };

However, neither template argument deduction nor template
instantiation is implemented for template template argument packs, so
this functionality isn't useful yet.

I'll probably replace the encoding of template template
argument pack expansions in TemplateArgument so that it's harder to
accidentally forget about the expansion. However, this is a step in
the right general direction.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122890 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/AST/TemplateBase.h
include/clang/Sema/ParsedTemplate.h
lib/AST/DeclTemplate.cpp
lib/AST/TemplateBase.cpp
lib/Sema/SemaTemplate.cpp
lib/Sema/SemaTemplateDeduction.cpp
lib/Sema/SemaTemplateVariadic.cpp
lib/Serialization/ASTReader.cpp
lib/Serialization/ASTWriter.cpp
test/CXX/temp/temp.param/p11-0x.cpp