1 // RUN: %clang_cc1 -fsyntax-only -verify %s
11 typedef X
<int***> *ptr
;
14 X
<float>::X
<int> xi
= x
; // expected-error{{qualified reference to 'X' is a constructor name rather than a template name}}
16 X
<float>::X
<int> xi
= x
; // expected-error{{qualified reference to 'X' is a constructor name rather than a template name}}
21 // FIXME: test template template parameters
22 template<typename T
, typename U
>
26 typedef U_type U_type2
;
28 void f0(const X0
&); // expected-note{{here}}
30 void f0(const X0
<T
, U
>&); // expected-error{{redecl}}
32 void f1(const X0
&); // expected-note{{here}}
34 void f1(const X0
<type
, U_type2
>&); // expected-error{{redecl}}
36 void f2(const X0
&); // expected-note{{here}}
38 void f2(const ::X0
<type
, U_type2
>&); // expected-error{{redecl}}
41 template<typename T
, T N
>
43 void f0(const X1
&); // expected-note{{here}}
45 void f0(const X1
<T
, N
>&); // expected-error{{redecl}}
49 template <class T
> class A
{
52 template class A
<int>;
55 namespace ForwardDecls
{
67 namespace ConflictingRedecl
{
68 template<typename
> struct Nested
{
69 template<typename
> struct Nested
; // expected-error {{member 'Nested' has the same name as its class}}