+1999-04-08 Mark Mitchell <mark@codesourcery.com>
+
+ * search.c (template_self_reference_p): Tweak.
+
+1999-04-07 Mark Mitchell <mark@codesourcery.com>
+
+ * init.c (build_offset_ref): Don't build yet another weird data
+ structure to describe overloaded functions.
+
1999-04-06 Mark Mitchell <mark@codesourcery.com>
* cp-tree.h (BASELINK_P): New macro.
/* A lot of this logic is now handled in lookup_field and
lookup_fnfield. */
- if (member && TREE_CODE (member) == TREE_LIST)
+ if (member && BASELINK_P (member))
{
/* Go from the TREE_BASELINK to the member function info. */
tree fnfields = member;
&& ! allocation_temporary_p ())
fnfields = copy_list (fnfields);
- t = build_tree_list (error_mark_node, fnfields);
- TREE_TYPE (t) = build_offset_type (type, unknown_type_node);
- return t;
+ TREE_TYPE (fnfields) = build_offset_type (type, unknown_type_node);
+ return fnfields;
}
t = member;
tree decl;
{
return (CLASSTYPE_USE_TEMPLATE (type)
+ && PRIMARY_TEMPLATE_P (CLASSTYPE_TI_TEMPLATE (type))
&& TREE_CODE (decl) == TYPE_DECL
&& DECL_ARTIFICIAL (decl)
&& DECL_NAME (decl) == constructor_name (type));
--- /dev/null
+// Build don't link:
+// Origin: Jason Merrill <jason@cygnus.com>
+
+struct X {
+ int f ();
+ int f (int);
+};
+
+void f(int i)
+{
+ i = sizeof(X::f); // ERROR - cannot take sizeof a member function
+}
--- /dev/null
+// Build don't link:
+// Origin: Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
+
+template <class T>
+class A {
+public:
+ class B { };
+ class C: public B {
+ public:
+ C(A&):B() { }
+ };
+ C f() { return C(*this); }
+};
+
+int
+main()
+{
+ A<int> a;
+ a.f();
+}