1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: %clang_cc1 -fsyntax-only -verify %s 2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// A non-type template-parameter shall not be declared to have 4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// floating point, class, or void type. 5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct A; 6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<double d> class X; // expected-error{{cannot have type}} 8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<double* pd> class Y; //OK 9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<double& rd> class Z; //OK 10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<A a> class X0; // expected-error{{cannot have type}} 12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotypedef void VOID; 14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<VOID a> class X01; // expected-error{{cannot have type}} 15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 16