1 // RUN: %clang_cc1 -fsyntax-only -verify %s
6 enum E
{ enum1
, enum2
};
7 template<int N
> struct A1
;
8 template<INT N
, INT M
> struct A2
;
9 template<enum E x
, E y
> struct A3
;
10 template<int &X
> struct A4
;
11 template<int *Ptr
> struct A5
;
12 template<int (&f
)(int, int)> struct A6
;
13 template<int (*fp
)(float, double)> struct A7
;
14 template<int X::*pm
> struct A8
;
15 template<float (X::*pmf
)(float, int)> struct A9
;
16 template<typename T
, T x
> struct A10
;
18 template<float f
> struct A11
; // expected-error{{a non-type template parameter cannot have type 'float'}}
20 template<void *Ptr
> struct A12
;
21 template<int (*IncompleteArrayPtr
)[]> struct A13
;