readability-simplify-boolean-expr¶
Looks for boolean expressions involving boolean constants and simplifies them to use the appropriate boolean expression directly.
Examples:
Initial expression |
Result |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- The resulting expression
eis modified as follows: Unnecessary parentheses around the expression are removed.
Negated applications of
!are eliminated.Negated applications of comparison operators are changed to use the opposite condition.
Implicit conversions of pointers, including pointers to members, to
boolare replaced with explicit comparisons tonullptrin C++11 orNULLin C++98/03.Implicit casts to
boolare replaced with explicit casts tobool.Object expressions with
explicit operator boolconversion operators are replaced with explicit casts tobool.Implicit conversions of integral types to
boolare replaced with explicit comparisons to0.
- Examples:
The ternary assignment
bool b = (i < 0) ? true : false;has redundant parentheses and becomesbool b = i < 0;.The conditional return
if (!b) return false; return true;has an implied double negation and becomesreturn b;.The conditional return
if (i < 0) return false; return true;becomesreturn i >= 0;.The conditional return
if (i != 0) return false; return true;becomesreturn i == 0;.The conditional return
if (p) return true; return false;has an implicit conversion of a pointer tobooland becomesreturn p != nullptr;.The ternary assignment
bool b = (i & 1) ? true : false;has an implicit conversion ofi & 1tobooland becomesbool b = (i & 1) != 0;.The conditional return
if (i & 1) return true; else return false;has an implicit conversion of an integer quantityi & 1tobooland becomesreturn (i & 1) != 0;Given
struct X { explicit operator bool(); };, and an instancexofstruct X, the conditional returnif (x) return true; return false;becomesreturn static_cast<bool>(x);