5.9.7 (relational operators): "No other pointer comparisons specified."
Since 5.9 is unclear (it concerns functions, but not explicitly member functions), a quick look at 5.10 (equality comparison) clearly separates functions from member functions:
In addition, you can compare pointers to elements or a pointer to a member and a null pointer constant. The conversion of pointers to members (4.11) and qualification conversions (4.4) are performed to bring them to a common type. If one operand is a null pointer constant, the generic type is the type of the other operand. Otherwise, type is a pointer to a member type similar to (4.4) the type of one of the operands with the cv-qualification signature (4.4), which is the union of the cv-qualification signatures of operand types. [Note: this means that any pointer to an element can be compared to a null pointer constant. ] If both operands are equal to zero, they are compared equal. Otherwise, if only one of them is equal to zero, they are compared unevenly. Otherwise, if either is a pointer to a virtual member function, the result is undefined. Otherwise, they compare equal ones if and only if they belong to the same member of the same derived object (1.8) or the same subobject if they were dereferenced by a hypothetical object with a related class type.
Thus, you can use operators, the value == and != specified, but the value < , > , <= and >= not specified.
In particular, nothing provides transitivity, so it is unclear whether they are inserted correctly into the set.
source share