xref: /aosp_15_r20/external/clang/test/CXX/temp/temp.param/p4.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s
2*67e74705SXin Li class X;
3*67e74705SXin Li 
4*67e74705SXin Li // C++ [temp.param]p4
5*67e74705SXin Li typedef int INT;
6*67e74705SXin Li enum E { enum1, enum2 };
7*67e74705SXin Li template<int N> struct A1;
8*67e74705SXin Li template<INT N, INT M> struct A2;
9*67e74705SXin Li template<enum E x, E y> struct A3;
10*67e74705SXin Li template<int &X> struct A4;
11*67e74705SXin Li template<int *Ptr> struct A5;
12*67e74705SXin Li template<int (&f)(int, int)> struct A6;
13*67e74705SXin Li template<int (*fp)(float, double)> struct A7;
14*67e74705SXin Li template<int X::*pm> struct A8;
15*67e74705SXin Li template<float (X::*pmf)(float, int)> struct A9;
16*67e74705SXin Li template<typename T, T x> struct A10;
17*67e74705SXin Li 
18*67e74705SXin Li template<float f> struct A11; // expected-error{{a non-type template parameter cannot have type 'float'}}
19*67e74705SXin Li 
20*67e74705SXin Li template<void *Ptr> struct A12;
21*67e74705SXin Li template<int (*IncompleteArrayPtr)[]> struct A13;
22