MISRA.BIN_OP.OVERLOADComma, logical OR, or logical AND operator overloaded. MISRA-C++ Rule 5-2-11 (required): The comma operator, && operator and the || operator shall not be overloaded.RationaleOverloaded versions of the comma and logical conjunction operators have the semantics of function calls whose sequence point and ordering semantics are different from those of the builtin versions. It may not be clear at the point of use that these operators are overloaded, and so developers may be unaware which semantics apply. Example#include "util.h" class A { public: UtilType getValue ( ); UtilType setValue ( UtilType const & ); }; void f1 ( A & a1, A & a2 ) { a1.getValue ( ) && a2.setValue ( 0 ); // Short circuiting may occur } bool operator && ( UtilType const &, UtilType const & ); // Non-compliant void f2 ( A & a1, A & a2 ) { a1.getValue ( ) && a2.setValue ( 0 ); // Both operands evaluated } If the type returned by getValue and setValue has an overloaded operator &&, then both getValue and setValue will be evaluated. |