re PR c++/46220 (Error: invalid covariant return type generated for incomplete class type and different qualifer)
PR c++/46220 * search.c (check_final_overrider): Allow pointer to same incomplete class type with different cv-quals. From-SVN: r170676
This commit is contained in:
parent
087070764a
commit
38ffa8289c
|
@ -1,3 +1,9 @@
|
|||
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
|
||||
|
|
|
@ -1835,11 +1835,17 @@ check_final_overrider (tree overrider, tree basefn)
|
|||
|
||||
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)))
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2011-03-04 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* g++.dg/inherit/covariant19.C: New.
|
||||
|
||||
2011-03-04 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/47968
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
// 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();
|
||||
};
|
||||
|
Loading…
Reference in New Issue