This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/19377] Using declaration in "private" part causes "protected" diagnostic
- From: "fabien at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 06 Feb 2014 16:20:49 +0000
- Subject: [Bug c++/19377] Using declaration in "private" part causes "protected" diagnostic
- Auto-submitted: auto-generated
- References: <bug-19377-4 at http dot gcc dot gnu dot org/bugzilla/>
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.