7 Expressions [expr]

7.3 Standard conversions [conv]

7.3.14 Boolean conversions [conv.bool]

A prvalue of arithmetic, unscoped enumeration, pointer, or pointer-to-member type can be converted to a prvalue of type bool.
A zero value, null pointer value, or null member pointer value is converted to false; any other value is converted to true.
For direct-initialization ([dcl.init]), a prvalue of type std::nullptr_­t can be converted to a prvalue of type bool; the resulting value is false.