* semantics.c (finish_id_expression): Only check if the type of
a template argument is integral or enumeration when it is not
dependent.
* g++.dg/parse/nontype1.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75200
138bc75d-0d04-0410-961f-
82ee72b054a4
2003-12-29 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+ PR c++/13289
+ * semantics.c (finish_id_expression): Only check if the type of
+ a template argument is integral or enumeration when it is not
+ dependent.
+
+2003-12-29 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
PR c++/12403
* parser.c (cp_parser_template_declaration_after_export): Set up
template specialization scope in case of explicit specialization.
if (TREE_CODE (decl) == TEMPLATE_PARM_INDEX)
decl = TEMPLATE_PARM_DECL (decl);
if (integral_constant_expression_p
+ && !dependent_type_p (TREE_TYPE (decl))
&& !INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (decl)))
{
if (!allow_non_integral_constant_expression_p)
2003-12-29 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+ PR c++/13289
+ * g++.dg/parse/nontype1.C: New test.
+
+2003-12-29 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
PR c++/12403
* g++.dg/parse/explicit1.C: New test.
* g++.old-deja/g++.pt/explicit71.C: Adjust expected error.
--- /dev/null
+// Copyright (C) 2003 Free Software Foundation
+// Contributed by Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+// { dg-do compile }
+
+// PR c++/13289: Incorrectly reject non-type template argument that has
+// dependent type
+
+template <class T, T t> class C {};
+template <class T, T t> class D { C<T, t-1> c; };