Читаю я эту главу (15.3.2.1) в книге Страуструпа "Язык прогарммирования С++" и не могу понять...
"Если доступ к имени или базовому классу может быть осуществлен при помощи нескольких путей в решетке классов с множественным наследованием, то доступ разрешен только в том случае, если он разрешен по каждому из возможных путей. Например:
struct B
{
int m;
static int sm;
//...
};
class D1: public virtual B {};
class D2: public virtual B {};
class DD: public D1, private D2 {};
DD* pd = new DD;
B* pb = pd; //Правильно: доступ через D1
int i1 = pd->m; //Правильно: доступ через D1
"
Если доступ к имени или базовому классу (struct B) может быть осуществлен при помощи нескольких путей в решетке классов с множественным наследованием (может, через D1 и D2), то доступ разрешен только в том случае, если он разрешен по каждому из возможных путей (через D1 разрешен, а через D2 не разрешен).
Так почему тогда в итоге доступ все-таки разрешен? Что-то я запутался.