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.

Reply via email to