Programmer can select another `opEquals` form, even though the form is not useful in general case. So I think "one of the following forms" is not correct. E.g.

```d
// both hand side can be const object, but rhs should be lvalue
bool opEquals(ref const S s) const { ... }
```