MISRA Discussion Forums

Full Version: A13-5-4 opposite operator clarification
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
We would like to get clarification on what "opposite operators" means.

The referenced JSF guideline says (such as == and !=) which implies there are others, but there are no examples present other than "!= and ==". 

Presumably this includes relational operators, but it doesn't discuss how. This rule would seemingly imply that <= should be implemented using >=. But would this mean that it is considered non-compliant to implement it with operator >?


Code:
inline bool operator<=(const X& lhs, const X& rhs) { return !(lhs > rhs); }

Are relational operators allowed to call any other relational operators? Are there any other pairings that are considered opposites for this rule?
Answering your questions in order:
- Yes, your code is compliant - we're not quite sure how you came to the conclusion we were expecting <= to be implemented with >=
- Yes, as in your example the implementation of <= can use >
- The rule applies to three pairs: == & != <= & > >= & <

A possible compliant implementation would be to define == and < and use std::rel_ops