A boolean-expression is an expression that yields a result of type bool
.
The controlling conditional expression of an if-statement (§8.7.1), while-statement (§8.8.1), do-statement (§8.8.2), or for-statement (§8.8.3) is a boolean-expression. The controlling conditional expression of the ?:
operator (§7.12) follows the same rules as a boolean-expression, but for reasons of operator precedence is classified as a conditional-or-expression.
A boolean-expression is required to be of a type that can be implicitly converted to bool
or of a type that implements operator
true
. If neither of these requirements are satisfied, a compile-time error occurs.
When a boolean expression is of a type that cannot be implicitly converted to bool
but does implement operator
true
, then following evaluation of the expression, the operator
true
implementation provided by the type is invoked to produce a bool
value.
The DBBool
struct type in §11.3.2 provides an example of a type that implements operator
true
.