A prvalue of an integer type other than 
bool, 
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.