https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68186
ensadc at mailnesia dot com changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |ensadc at mailnesia dot com
--- Comment #3 from ensadc at mailnesia dot com ---
The error is due to the call of `perform_or_defer_access_check` in
`alter_access` in [`class.cc`].
[`class.cc`]: https://gcc.gnu.org/cgit/gcc/tree/gcc/cp/class.cc
There have been several changes in `alter_access` over the years, but it seems
that the access check has been there since
g:38afd588c5181ee770848ebefdfdb288d28f7513. This commit predates the first
message in `gcc-patches` archives.
The standard requires the members named in the *using-declaration* to be
accessible. But do they need to accessible along the base-type path? My
understanding is that they only need to be accessible through the qualified
name.
C++98 [namespace.udecl]/14:
> All instances of the name mentioned in a using-declaration shall be
> accessible.
N5046 [namespace.udecl]/14:
> In a using-declarator that does not name a constructor, every declaration
> named shall be accessible.