https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102168
--- Comment #6 from Peter Dimov <pdimov at gmail dot com> --- Yes, I suppose you're right. The warning warns that Derived _can be_ deleted via Base*, and that's correct - if not very useful in practice in this specific case. In fact the private destructor case is even less useful. ~Derived won't compile unless it's Derived that is Base's friend, in which case everything is actually fine. I suppose we'll have to live with it. The annoying part is that there's no warning, and then you add an unrelated friend declaration while refactoring, and the warning appears.