Ответ 1
Ошибка GCC. [Class.access.base]/р5:
Член
m
доступен в точкеR
, когда он назван в классеN
, если
m
как членN
является общедоступным илиm
как членN
является закрытым, аR
встречается у члена или друга классаN
илиm
как членN
защищен, аR
встречается в члене или другом классаN
или в члене классаP
, полученном изN
, гдеm
как членP
является общедоступным, приватным или защищенным, или- существует базовый класс
B
ofN
, доступный вR
, аm
доступен вR
, когда он указан в классеB
.
N
is DerivedA
, m
is x
, R
является конструктором DerivedB
. Существует базовый класс BaseClass
of DerivedA
, доступный в R
, а x
, названный в классе BaseClass
(т.е. BaseClass::x
), явно доступен в R
, поэтому четвертой пулей точка, DerivedA::x
доступна в R
.