A prvalue that is not a converted bit-field and has an integer type other than
bool, 
char8_t, 
char16_t,
char32_t, or 
wchar_t whose integer conversion
rank (
[conv.rank]) is less than the rank of 
int can be
converted to a prvalue of type 
int if 
int can represent
all the values of the source type; otherwise, the source prvalue can be
converted to a prvalue of type 
unsigned int.