Доступ к базовым классам
class XX : B { /* ... */ }; // B -- закрытый базовый класс class YY : B { /* ... */ }; // B -- открытая базовая структура
На самом деле, в оригинале было так: class XX : B { /* ... */ }; // B -- закрытая база struct YY : B { /* ... */ }; // B -- открытая база
Т.е. вне зависимости от того, является ли база B классом или структурой, права доступа к унаследованным членам определяются типом наследника: по умолчанию, класс закрывает доступ к своим унаследованным базам, а структура -- открывает.
В принципе, в этом нет ничего неожиданного -- доступ по умолчанию к обычным, не унаследованным, членам задается теми же правилами.