+2004-05-22 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/15285
+ PR c++/15299
+ * pt.c (build_non_dependent_expr): Expand the set of tree nodes
+ recognized as overloaded functions.
+
2004-05-22 Mark Mitchell <mark@codesourcery.com>
PR c++/15507
tree
build_non_dependent_expr (tree expr)
{
+ tree inner_expr;
+
/* Preserve null pointer constants so that the type of things like
"p == 0" where "p" is a pointer can be determined. */
if (null_ptr_cst_p (expr))
return expr;
/* Preserve OVERLOADs; the functions must be available to resolve
types. */
- if (TREE_CODE (expr) == OVERLOAD
- || TREE_CODE (expr) == FUNCTION_DECL
- || TREE_CODE (expr) == TEMPLATE_DECL)
+ inner_expr = (TREE_CODE (expr) == ADDR_EXPR ?
+ TREE_OPERAND (expr, 0) : expr);
+ if (TREE_CODE (inner_expr) == OVERLOAD
+ || TREE_CODE (inner_expr) == FUNCTION_DECL
+ || TREE_CODE (inner_expr) == TEMPLATE_DECL
+ || TREE_CODE (inner_expr) == TEMPLATE_ID_EXPR)
return expr;
/* Preserve string constants; conversions from string constants to
"char *" are allowed, even though normally a "const char *"
+2004-05-22 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/15285
+ PR c++/15299
+ * g++.dg/template/non-dependent5.C: New test.
+ * g++.dg/template/non-dependent6.C: New test.
+
2004-05-22 Mark Mitchell <mark@codesourcery.com>
PR c++/15507