+2003-12-16 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ * g++.dg/template/nontype3.C: New test.
+ * g++.dg/template/static2.C: Tweaked the dg-error clause.
+
2003-12-16 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
* g++.dg/warn/noreturn-3.C: Also test instantiation.
--- /dev/null
+// { dg-do compile }\r
+// Origin: <drow at gcc dot gnu dot org>,\r
+// <giovannibajo at gcc dot gnu dot org>\r
+// c++/13243: Template parameters of non integral or enumeration type can't be\r
+// used for integral constant expressions. ADDR_EXPR and INDIRECT_REF are\r
+// invalid too.\r
+\r
+template <int T> class foo {};\r
+template <int *T> class bar {};\r
+\r
+template <int *PI>\r
+void dep5(bar<PI> *);\r
+\r
+template <int *PI>\r
+void dep6(bar<PI+1> *); // { dg-error "" "integral or enumeration" }\r
+\r
+template <int I>\r
+void dep7(bar<I+1> *);\r
+\r
+template <int *PI>\r
+void dep8(foo< *PI > *); // { dg-error "" "integral or enumeration" }\r
+\r
+template <int PI[1]>\r
+void dep9(foo< *PI > *); // { dg-error "" "integral or enumeration" }\r
+\r
+template <int PI[1]>\r
+void dep9a(foo< sizeof(*PI) > *);\r
+\r
+template <int PI[1]>\r
+void dep10(foo< PI[0] > *); // { dg-error "" "integral or enumeration" }\r
+\r
+template <int I>\r
+void dep11(foo< *&I > *); // { dg-error "" "constant-expression" }\r
+\r
+template <int I>\r
+void dep12(foo< (&I)[4] > *); // { dg-error "" "constant-expression" }\r
+\r