https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64077
Andrew Dixie <gcc at dixie dot net.nz> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #4 from Andrew Dixie <gcc at dixie dot net.nz> --- (In reply to Daniel Krügler from comment #3) Given the reference to core issue 665, I now think the wording and intent of the standard is clear. For completeness I've given an example below, but I'm happy this can be closed. Thanks. class base { virtual ~base() {} }; class derived : private base { friend bool t1(derived *); }; bool t1(derived *x) { return dynamic_cast<base *>(x) != 0; } If the 'accessible' in p5 includes friendships relationships, then the dynamic_cast should succeed. If the 'accessible' in p5 requires a public base (like is required by p8), then the dynamic cast should fail (or be ill-formed). I think the wording of the standard clearly specifies succeed.