From 222e2a7620e6520ffaf4fc4e69d79c18da31542e Mon Sep 17 00:00:00 2001 From: "Zancanaro; Carlo" Date: Mon, 24 Sep 2012 09:58:17 +1000 Subject: Add the clang library to the repo (with some of my changes, too). --- .../temp.variadic/parameter-matching.cpp | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 clang/test/CXX/temp/temp.decls/temp.variadic/parameter-matching.cpp (limited to 'clang/test/CXX/temp/temp.decls/temp.variadic/parameter-matching.cpp') diff --git a/clang/test/CXX/temp/temp.decls/temp.variadic/parameter-matching.cpp b/clang/test/CXX/temp/temp.decls/temp.variadic/parameter-matching.cpp new file mode 100644 index 0000000..79340c3 --- /dev/null +++ b/clang/test/CXX/temp/temp.decls/temp.variadic/parameter-matching.cpp @@ -0,0 +1,43 @@ +// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s + +// Check for template type parameter pack (mis-)matches with template +// type parameters. +template struct X0t; +template struct X0t; + +template struct X1t; // expected-note{{previous template type parameter pack declared here}} +template struct X1t; // expected-error{{template type parameter conflicts with previous template type parameter pack}} + +template struct X2t; // expected-note{{previous template type parameter declared here}} +template struct X2t; // expected-error{{template type parameter pack conflicts with previous template type parameter}} + +template class> struct X0t_intt; +template class> struct X0t_intt; + +template class> struct X1t_intt; // expected-note{{previous template type parameter pack declared here}} +template class> struct X1t_intt; // expected-error{{template type parameter conflicts with previous template type parameter pack}} + +template class> struct X2t_intt; // expected-note{{previous template type parameter declared here}} +template class> struct X2t_intt; // expected-error{{template type parameter pack conflicts with previous template type parameter}} + +template struct X1nt; // expected-note{{previous non-type template parameter pack declared here}} +template struct X1nt; // expected-error{{non-type template parameter conflicts with previous non-type template parameter pack}} + +template class> class X1tt; // expected-note{{previous template template parameter declared here}} +template class...> class X1tt; // expected-error{{template template parameter pack conflicts with previous template template parameter}} + +// Check for matching with out-of-line definitions +namespace rdar8859985 { + template struct tuple { }; + template struct int_tuple { }; + + template + struct X { + template + X(tuple, int_tuple); + }; + + template + template + X::X(tuple, int_tuple) {} +} -- cgit v1.2.3