Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
A13-5-4 opposite operator clarification
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 >?

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
Posted by and on behalf of
the MISRA C++ Working Group

Forum Jump:

Users browsing this thread: 1 Guest(s)