Date: Mon, 11 May 2026 23:31:34 +0800
Is the following code valid?
class Base { public: int member; };
class Middle : private Base {};
struct Derived : public Middle { public: using ::Base::member; };
I am inclined to think it is not valid, as :Base::member is not really
accessible inside Derived. I believe accessibility is a requirement:
https://eel.is/c++draft/namespace.udecl#14.sentence-1.
However, while GCC rejects the code, both Clang and EDG accept it:
https://godbolt.org/z/Y33drKb6n.
Any comments?
class Base { public: int member; };
class Middle : private Base {};
struct Derived : public Middle { public: using ::Base::member; };
I am inclined to think it is not valid, as :Base::member is not really
accessible inside Derived. I believe accessibility is a requirement:
https://eel.is/c++draft/namespace.udecl#14.sentence-1.
However, while GCC rejects the code, both Clang and EDG accept it:
https://godbolt.org/z/Y33drKb6n.
Any comments?
-- Yongwei Wu URL: http://wyw.dcweb.cn/
Received on 2026-05-11 15:31:53
