Commit 68deab91 by Kriang Lerdsuwanakij Committed by Kriang Lerdsuwanakij

re PR c++/13289 (ICE in regenerate_decl_from_template on recursive template)

	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.

	* g++.dg/parse/nontype1.C: New test.

From-SVN: r75200
parent 2f9afd51
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.
......
......@@ -2400,6 +2400,7 @@ finish_id_expression (tree id_expression,
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.
......
// 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; };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment