A prvalue of an integer type can be converted to a prvalue of another
integer type.

A prvalue of an unscoped enumeration type can be converted to
a prvalue of an integer type.

If the
source type is bool, the value false is converted to
zero and the value true is converted to one.

Otherwise, the result is the unique value of the destination type
that is congruent to the source integer modulo ,
where N is the range exponent of the destination type.