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

Martin Sebor <msebor at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |diagnostic
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2017-02-07
                 CC|                            |msebor at gcc dot gnu.org
     Ever confirmed|0                           |1
           Severity|normal                      |enhancement

--- Comment #3 from Martin Sebor <msebor at gcc dot gnu.org> ---
As stated in the comments the error message is strictly correct because
overload resolution takes place before access checking.  At the same time, I do
agree that it might be helpful to mention the access level of each candidate in
the error message if/when the access matters, similarly to what Clang does
(below). On that basis I'll confirm this as an enhancement request.

t.C:11:16: error: 'f' is a private member of 'Klass'
        Klass::f (x);
               ^
t.C:5:21: note: declared private here
        static void f(const char*& a, int b) {}
                    ^
t.C:11:20: error: too few arguments to function call, expected 2, have 1
        Klass::f (x);
        ~~~~~~~~   ^
t.C:5:9: note: 'f' declared here
        static void f(const char*& a, int b) {}

Reply via email to