Cannot access protected member of another instance from derived type's scope
In this answer to the question " Why can't my object access protected members of another object defined in common base class? ", one can read: You can only access protected members from your own base class instance. Either I don't get it correctly or the following MCVE (live on coliru) proves it wrong: struct Base { void f(); protected: int prot; }; struct Derived : Base { void g(); private: int priv; }; void Base::f() { Base b; b.prot = prot; (void) b; } void Derived::g() { { Derived d; (void) d.priv; } { Derived& d = *this; (void) d.priv; } { Derived d; (void) d.prot; // <-- access to other