The standard is just vauge enough on this to make me accept both interpretations (of Clang vs the others) as valid. Because as written we have
[class.virtual]
17 A deleted function ([dcl.fct.def]) shall not override a function that is not deleted. Likewise, a function that is not deleted shall not override a deleted function.
The standard only says that we can't have a mismatch of non-deleted to deleted (implicitly or explicitly - [dcl.fct.def.delete]/1) between base definition and overrider (or vice-versa). What's absent is that there's no explicit requirement for the two functions to be deleted in the same way. I.e. nothing says both have to be explicitly deleted, or implicitly deleted; nothing says we can't have them deleted in different ways, like the OP does.
Now, is it reasonable to allow it as Clang does, with a warning? Yes, it is. We don't violate anything in the standard to warrant a diagnostic (to my reading), and there's an "obvious" meaning to the code since the function is deleted either-way. Furthermore, the warning tells us we might have done somthing we didn't mean to. Clang encourages us to delete explicitly if we wish to keep the overrider and silence the warning.
Is it reasonable to reject the code until we explicitly delete? I'd say "yes" to that as well, it's a small change at the end of the day, that Clang is suggesting as well. Not unreasonable to require the programmer to be explicit.
On the whole, this might warrant a small core issue to get all compilers to the same baseline. But there isn't really a whole lot broken here.
operator==can't be implicitly deleted, since it simply can't be overriden to be defaulted.B::operator==implicitly deleted sounds like a reasonable extension.defaulting it simply make itdeleted? It's not like it's actually making it callable. If one tries that, clang refuses too.