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 to- nullptrin C++11 or- NULLin C++98/03.
- Implicit casts to - boolare replaced with explicit casts to- bool.
- Object expressions with - explicit operator boolconversion operators are replaced with explicit casts to- bool.
- Implicit conversions of integral types to - boolare replaced with explicit comparisons to- 0.
 
- Examples:
- The ternary assignment - bool b = (i < 0) ? true : false;has redundant parentheses and becomes- bool b = i < 0;.
- The conditional return - if (!b) return false; return true;has an implied double negation and becomes- return b;.
- The conditional return - if (i < 0) return false; return true;becomes- return i >= 0;.- The conditional return - if (i != 0) return false; return true;becomes- return i == 0;.
- The conditional return - if (p) return true; return false;has an implicit conversion of a pointer to- booland becomes- return p != nullptr;.- The ternary assignment - bool b = (i & 1) ? true : false;has an implicit conversion of- i & 1to- booland becomes- bool b = (i & 1) != 0;.
- The conditional return - if (i & 1) return true; else return false;has an implicit conversion of an integer quantity- i & 1to- booland becomes- return (i & 1) != 0;
- Given - struct X { explicit operator bool(); };, and an instance- xof- struct X, the conditional return- if (x) return true; return false;becomes- return static_cast<bool>(x);