This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/19377] Using declaration in "private" part causes "protected" diagnostic


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19377

--- Comment #10 from fabien at gcc dot gnu.org ---
(In reply to Andrey Belevantsev from comment #9)
> Another test case of the same issue (both clang and icc compile this fine):

It is not the same issue as the protected keyword is not involved. (And Clang
and ICC should be fixed instead, see below).

> 
> namespace ns {
>   class Base {
>   public:
>     int i;
>   };
>   class Derived : public Base {
>     using Base::i;
>   };
> }
> class DerivedDerived : public ns::Derived {
>   using ns::Base::i;
> };
> 
> we get
> 
> /tmp/ns.C:4:9: error: âint ns::Base::iâ is inaccessible
> /tmp/ns.C:10:7: error: within this context
> 
> It is indeed rejects-valid but I cannot claim this is a regression as I
> can't find the version that did that correctly.  

The testcase is not valid, as a using declaration shall refer to a direct base
class, which is not the case in 'using ns::Base::i' (the namespace ns does not
seem to be relevant here). It is invalid for a second reason, 'using Base::i'
is declared (implicitly) in a private section, so inaccessible in
DerivedDerived.

> It's 9 years of the
> original bugreport, maybe rise a priority?..

Raising the priority would not make me fix this bug more quickly. This bug is
not a regression, and not a high priority in my opinion. Thought, it is in my
TODO list. I gave it a try two years ago, and it was not obvious to fix. Feel
free to take over if you have more free time than I have.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]