Nothing in that paper conflicts with what I said.
Section 2.15 of that paper says: "If a class has a virtual function (directly or inherited), no == is generated." The OP is clearly talking about a polymorphic type, so that line applies: no `operator==` is generated. Therefore, the user must have provided such a function, in which case the usual rules for operator overloading apply.
What you're thinking about is probably the rest of 2.15, where it says that `b==a` doesn't work for the generated operator==. But note that the paper is very careful not to outlaw existing behavior. If you provide an `operator==` for the base class, `b==a` will still work, using the regular rules of C++. That is, 2.15 only outlaws it for generated operators.
Indeed, the entire paper goes through great pains to say that generated operators are not normal functions and do not partake in function overloading like regular functions.