+2003-03-27 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/10224
+ * pt.c (lookup_template_class): Only check instantiated args if
+ they do not contain template parameters.
+
2003-03-27 Nathan Sidwell <nathan@codesourcery.com>
PR c++/10158
arglist2 = coerce_template_parms (parmlist, arglist, template,
complain, /*require_all_args=*/1);
if (arglist2 == error_mark_node
- || (!processing_template_decl
+ || (!uses_template_parms (arglist2)
&& check_instantiated_args (template, arglist2, complain)))
POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, error_mark_node);
complain, /*require_all_args=*/1);
if (arglist == error_mark_node
- || (!processing_template_decl
+ || (!uses_template_parms (INNERMOST_TEMPLATE_ARGS (arglist))
&& check_instantiated_args (template,
INNERMOST_TEMPLATE_ARGS (arglist),
complain)))
--- /dev/null
+// { dg-do compile }
+
+// Copyright (C) 2003 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 27 Mar 2003 <nathan@codesourcery.com>
+
+// PR 10224. Rejected a valid constant argument.
+
+template <bool B> struct X {
+ struct I {};
+};
+
+template <typename T> struct Y {
+ static const bool selector = true;
+ typedef typename X<selector>::I helper;
+};
+
+Y<int> i;