+2002-09-30 Nathan Sidwell <nathan@codesourcery.com>
+
+ * tree.c (really_overloaded_fn): TEMPLATE_ID_EXPRs are also
+ overloaded.
+
2002-09-30 Steve Ellcey <sje@cup.hp.com>
* class.c (build_vtbl_initializer): Add cast.
x = TREE_OPERAND (x, 1);
if (BASELINK_P (x))
x = BASELINK_FUNCTIONS (x);
- return (TREE_CODE (x) == OVERLOAD
- && (OVL_CHAIN (x)
- || DECL_FUNCTION_TEMPLATE_P (OVL_FUNCTION (x))));
+
+ return ((TREE_CODE (x) == OVERLOAD && OVL_CHAIN (x))
+ || DECL_FUNCTION_TEMPLATE_P (OVL_CURRENT (x))
+ || TREE_CODE (x) == TEMPLATE_ID_EXPR);
}
/* Return the OVERLOAD or FUNCTION_DECL inside FNS. FNS can be an
+2002-09-30 Nathan Sidwell <nathan@codesourcery.com>
+
+ * g++.dg/overload/member1.C: New test.
+
2002-09-30 Mark Mitchell <mark@codesourcery.com>
* g++.dg/abi/empty7.C: New test.
--- /dev/null
+// { dg-do compile }
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 29 Sep 2002 <nathan@codesourcery.com>
+
+struct X
+{
+ template<typename T> static void ProcessProxy ();
+ typedef void (*Callback) ();
+ void Process (Callback);
+
+ template<typename T> void Process ()
+ {
+ Process (&ProcessProxy<T>);
+ }
+
+};
+
+void foo (X *x)
+{
+ x->Process<int> ();
+}