У меня есть следующий код:
struct A {
protected:
A() {}
A* a;
};
struct B : A {
protected:
B() { b.a = &b; }
A b;
};
Это странно не компилируется. Преступником является назначение b.a = &b;
: как GCC, так и clang жалуются, что A()
защищен, что не должно быть проблемой, потому что B наследует A. В какой темный угол стандарта я пришел?