Nie można uzyskać dostępu do chronionego elementu klasy bazowej w klasie pochodnej

Mam następujący kod:

struct A {
protected:
    A() {}

    A* a;
};

struct B : A {
protected:
    B() { b.a = &b; }

    A b;
};

Dziwnie się nie kompiluje. Sprawcą jestb.a = &b; przypisanie: zarówno GCC, jak i clang narzekająA() jest chroniony, co nie powinno być problemem, ponieważ B dziedziczy A. W jakim ciemnym kącie standardu przyszedłem?

questionAnswers(4)

yourAnswerToTheQuestion