This is a consequence of the creation of an integral type bool. According to the C ++ standard, section 3.9.1.6
bool true, false (: signed, unsigned, short long bool signed bool) - ) bool . ( )
, bool float , int, , 4.5.6:
bool prvalue int, false , true .
: ++ 11 fabs , bool int , fabs .