diff options
Diffstat (limited to 'test/SemaTemplate/temp_arg_type.cpp')
-rw-r--r-- | test/SemaTemplate/temp_arg_type.cpp | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/test/SemaTemplate/temp_arg_type.cpp b/test/SemaTemplate/temp_arg_type.cpp index a1db3f8..3876c25 100644 --- a/test/SemaTemplate/temp_arg_type.cpp +++ b/test/SemaTemplate/temp_arg_type.cpp @@ -1,16 +1,26 @@ // RUN: %clang_cc1 -fsyntax-only -verify %s -template<typename T> class A; // expected-note 2 {{template parameter is declared here}} +template<typename T> class A; // expected-note 2 {{template parameter is declared here}} expected-note{{template is declared here}} // [temp.arg.type]p1 A<0> *a1; // expected-error{{template argument for template type parameter must be a type}} -A<A> *a2; // expected-error{{template argument for template type parameter must be a type}} +A<A> *a2; // expected-error{{use of class template A requires template arguments}} A<int> *a3; A<int()> *a4; A<int(float)> *a5; A<A<int> > *a6; +// Pass an overloaded function template: +template<typename T> void function_tpl(T); +A<function_tpl> a7; // expected-error{{template argument for template type parameter must be a type}} + +// Pass a qualified name: +namespace ns { +template<typename T> class B {}; // expected-note{{template is declared here}} +} +A<ns::B> a8; // expected-error{{use of class template ns::B requires template arguments}} + // [temp.arg.type]p2 void f() { class X { }; @@ -18,7 +28,15 @@ void f() { } struct { int x; } Unnamed; // expected-note{{unnamed type used in template argument was declared here}} -A<__typeof__(Unnamed)> *a7; // expected-error{{template argument uses unnamed type}} +A<__typeof__(Unnamed)> *a9; // expected-error{{template argument uses unnamed type}} + +template<typename T, unsigned N> +struct Array { + typedef struct { T x[N]; } type; +}; + +template<typename T> struct A1 { }; +A1<Array<int, 17>::type> ax; // FIXME: [temp.arg.type]p3. The check doesn't really belong here (it // belongs somewhere in the template instantiation section). |