+2011-03-04 Jason Merrill <jason@redhat.com>
+
+ PR c++/46220
+ * search.c (check_final_overrider): Allow pointer to same incomplete
+ class type with different cv-quals.
+
2011-03-03 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/47974
if (CLASS_TYPE_P (base_return) && CLASS_TYPE_P (over_return))
{
- tree binfo = lookup_base (over_return, base_return,
- ba_check | ba_quiet, NULL);
+ /* Strictly speaking, the standard requires the return type to be
+ complete even if it only differs in cv-quals, but that seems
+ like a bug in the wording. */
+ if (!same_type_ignoring_top_level_qualifiers_p (base_return, over_return))
+ {
+ tree binfo = lookup_base (over_return, base_return,
+ ba_check | ba_quiet, NULL);
- if (!binfo)
- fail = 1;
+ if (!binfo)
+ fail = 1;
+ }
}
else if (!pedantic
&& can_convert (TREE_TYPE (base_type), TREE_TYPE (over_type)))
--- /dev/null
+// PR c++/46220
+// According to the letter of the standard this is invalid,
+// but that seems like a bug.
+
+class Baz;
+class Foo {
+public:
+ virtual const Baz* getBaz() = 0;
+};
+class Bar : public Foo {
+public:
+ Baz* getBaz();
+};
+