https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112744

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2023-11-28
                 CC|                            |mpolacek at gcc dot gnu.org

--- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Confirmed, I think.  Since a is static, there is only one copy.  So it should
not matter that A is an ambiguous base of D (which it is).  See [class]/note-3.

For the error line, in finish_class_member_access_expr scope will be A, so we
do
 3496           /* Find the base of OBJECT_TYPE corresponding to SCOPE.  */
 3497           access_path = lookup_base (object_type, scope, ba_check,
 3498                                      NULL, complain);
where object_type=D, scope=A.  But the ba_check means we give an error.

We don't know at this point that name refers to a static data member.  But we
can look it up, and maybe use ba_any.

Not a regression.

Reply via email to