* search.c (setup_class_bindings): Robustify.
* typeck.c (common_type): Use same_type_p, not pointer equality,
to compare types.
From-SVN: r28756
1999-08-18 Mark Mitchell <mark@codesourcery.com>
+ * search.c (setup_class_bindings): Robustify.
+ * typeck.c (common_type): Use same_type_p, not pointer equality,
+ to compare types.
+
* cp-tree.h (build_lang_field_decl): Remove.
* class.c (build_vtable): Replace calls to build_lang_field_decl
with build_lang_decl.
binding. This means that we already processed this binding
above. */
my_friendly_assert (type_binding_p, 19990401);
- else
+ else if (value_binding)
{
if (TREE_CODE (value_binding) == TREE_LIST
&& TREE_TYPE (value_binding) == error_mark_node)
tt1 = TYPE_MAIN_VARIANT (tt1);
tt2 = TYPE_MAIN_VARIANT (tt2);
- if (tt1 == tt2)
+ if (same_type_p (tt1, tt2))
target = tt1;
else if (b1)
{
--- /dev/null
+// Build don't link:
+// Origin: Leon Bottou <leonb@research.att.com>
+
+class AA { protected:
+ template <class T> struct BB { T x; BB(const T &x) : x(x) { }; };
+ template <class T> struct CC : public BB<T> { CC(const T &x) : BB<T>(x) { };
+};
+};
--- /dev/null
+// Build don't link:
+// Origin: Rick Campbell <rick.campbell@db.com>
+
+template <class Owner, typename Type>
+struct DataMember
+{
+ inline DataMember (Type Owner::* data_member);
+
+ Type Owner::* _data_member;
+};
+
+template <class Owner, typename Type>
+inline
+DataMember<Owner,Type>::DataMember (Type Owner::* data_member)
+ : _data_member (data_member)
+{
+}