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

--- Comment #6 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jason Merrill <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:4df735e01e319997841574f353d2aa076a0335c2

commit r13-465-g4df735e01e319997841574f353d2aa076a0335c2
Author: Jason Merrill <ja...@redhat.com>
Date:   Fri Mar 18 22:52:32 2022 -0400

    c++: hidden friend access [DR1699]

    It has come up several times that Clang considers hidden friends of a class
    to be sufficiently memberly to be covered by a friend declaration naming
the
    class.  This is somewhat unclear in the standard: [class.friend] says
    "Declaring a class to be a friend implies that private and protected
members
    of the class granting friendship can be named in the base-specifiers and
    member declarations of the befriended class."

    A hidden friend is a syntactic member-declaration, but is it a "member
    declaration"?  CWG was ambivalent, and referred the question to EWG as a
    design choice.  But recently Patrick mentioned that the current G++ choice
    not to treat it as a "member declaration" was making his library work
    significantly more cumbersome, so let's go ahead and vote the other way.

    This means that the testcases for 100502 and 58993 are now accepted.

            DR1699
            PR c++/100502
            PR c++/58993

    gcc/cp/ChangeLog:

            * friend.cc (is_friend): Hidden friends count as members.
            * search.cc (friend_accessible_p): Likewise.

    gcc/testsuite/ChangeLog:

            * g++.dg/template/access37.C: Now OK.
            * g++.dg/template/friend69.C: Now OK.
            * g++.dg/lookup/friend23.C: New test.

Reply via email to