summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaTemplate/variadic-class-template-2.cpp
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2009-06-13 02:08:00 +0000
committerAnders Carlsson <andersca@mac.com>2009-06-13 02:08:00 +0000
commit15201f19bae9b686eb0f29942c419137216fde98 (patch)
treeba0a75714726a5938ffc2249847b8dfaac856f0f /clang/test/SemaTemplate/variadic-class-template-2.cpp
parent70b27e6f8bcce65de2ca8c3d07da8c3d69d01582 (diff)
downloadbcm5719-llvm-15201f19bae9b686eb0f29942c419137216fde98.tar.gz
bcm5719-llvm-15201f19bae9b686eb0f29942c419137216fde98.zip
More work on type parameter packs.
llvm-svn: 73281
Diffstat (limited to 'clang/test/SemaTemplate/variadic-class-template-2.cpp')
-rw-r--r--clang/test/SemaTemplate/variadic-class-template-2.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/clang/test/SemaTemplate/variadic-class-template-2.cpp b/clang/test/SemaTemplate/variadic-class-template-2.cpp
new file mode 100644
index 00000000000..eadea901c7f
--- /dev/null
+++ b/clang/test/SemaTemplate/variadic-class-template-2.cpp
@@ -0,0 +1,19 @@
+// RUN: clang-cc -fsyntax-only -verify %s -std=c++0x
+
+// Type parameters packs
+template <typename ...> struct TS1 {}; // expected-note{{template parameter is declared here}}
+template struct TS1<>;
+template struct TS1<int>;
+template struct TS1<int, int>;
+template struct TS1<int, 10>; // expected-error{{template argument for template type parameter must be a type}}
+
+template <typename, typename ...> struct TS2 {}; // expected-note{{template is declared here}}
+template struct TS2<>; // expected-error{{too few template arguments for class template 'TS2'}}
+template struct TS2<int>;
+template struct TS2<int, int>;
+
+template <typename = int, typename ...> struct TS3 {}; // expected-note{{template parameter is declared here}}
+template struct TS3<>; // expected-note{{previous explicit instantiation is here}}
+template struct TS3<int>; // expected-error{{duplicate explicit instantiation of 'TS3<>'}}
+template struct TS3<int, int>;
+template struct TS3<10>; // expected-error{{template argument for template type parameter must be a type}}
OpenPOWER on IntegriCloud