]> granicus.if.org Git - clang/commit
Implement support for pack expansions whose pattern is a non-type
authorDouglas Gregor <dgregor@apple.com>
Mon, 3 Jan 2011 17:17:50 +0000 (17:17 +0000)
committerDouglas Gregor <dgregor@apple.com>
Mon, 3 Jan 2011 17:17:50 +0000 (17:17 +0000)
commitbe230c36e32142cbdcdbe9c97511d097beeecbab
treea9c32a8f84720ac278c7bd11ab45b5d12859a7a0
parent9917401b32f26b16ae6053d07903ac147b64a43b
Implement support for pack expansions whose pattern is a non-type
template argument (described by an expression, of course). For
example:

  template<int...> struct int_tuple { };

  template<int ...Values>
  struct square {
    typedef int_tuple<(Values*Values)...> type;
  };

It also lays the foundation for pack expansions in an initializer-list.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122751 91177308-0d34-0410-b5e6-96231b3b80d8
21 files changed:
include/clang/AST/ExprCXX.h
include/clang/AST/RecursiveASTVisitor.h
include/clang/Basic/DiagnosticSemaKinds.td
include/clang/Basic/StmtNodes.td
include/clang/Sema/Sema.h
include/clang/Serialization/ASTBitCodes.h
lib/AST/ExprCXX.cpp
lib/AST/ExprClassification.cpp
lib/AST/ExprConstant.cpp
lib/AST/StmtPrinter.cpp
lib/AST/StmtProfile.cpp
lib/AST/TemplateBase.cpp
lib/CodeGen/Mangle.cpp
lib/Sema/SemaTemplateDeduction.cpp
lib/Sema/SemaTemplateVariadic.cpp
lib/Sema/TreeTransform.h
lib/Serialization/ASTReaderStmt.cpp
lib/Serialization/ASTWriterStmt.cpp
lib/StaticAnalyzer/Checkers/ExprEngine.cpp
test/CXX/temp/temp.decls/temp.variadic/metafunctions.cpp
tools/libclang/CXCursor.cpp