Ah of course. I'm thinking of a comparison that demands two identical argument types, which isn't necessarily the case.
Im just thinking from the memory model point of view. A nullptr is implicitly convertible to a fictional object at address 0. Valid pointers represent objects at address >0.
...or <0. I don't know what the default is these days, but I remember that Intel x86 at least *used* to have signed pointers. That is, (char*)0xffffffff would compare less than (char*)0x00000001, exactly the same way that (int)0xffffffff compares less than (int)0x00000001.
I think it would be good to require pointer comparison to be a total order consistent with std::less, but there is clearly a lot of influence on the opposite side, or else the wording for std::less wouldn't be so complicated.