Prvalue целого числа типа, кроме bool, char16_t, char32_t, или wchar_t чей integer conversion rank меньше , чем ранг int может быть преобразованы в prvalue типа , int если int можно представить все значения типа источника; в противном случае исходное prvalue может быть преобразовано в prvalue типа unsigned int.
Prvalue типа char16_t, char32_tили wchar_t ([basic.fundamental]) может быть преобразовано в prvalue первого из следующих типов , которые могут представлять все значения его базового типа: int, unsigned int, long int, unsigned long int, long long int, или unsigned long long int. Если ни один из типов в этом списке не может представлять все значения его базового типа, а prvalue типа char16_t, char32_tили wchar_t может быть преобразовано в prvalue его базового типа.
Prvalue типа перечисления с незаданной областью, базовый тип которого не fixed ([dcl.enum]), может быть преобразован в prvalue первого из следующих типов, который может представлять все значения перечисления (т. Е. Значения в диапазоне bmin до, bmax как описано в [dcl.enum]) : int, unsigned int, long int, unsigned long int, long long int, или unsigned long long int. Если ни один из типов в этом списке не может представлять все значения перечисления, prvalue типа перечисления с незаданной областью может быть преобразовано в prvalue расширенного целочисленного типа с наименьшим integer conversion rank выше, чем ранг, long long в котором все значения перечисления могут быть представлены. Если таких расширенных типов два, выбирается подписанный.
Prvalue типа перечисления с незаданной областью, базовый тип которого fixed ([dcl.enum]), может быть преобразован в prvalue его базового типа. Более того, если интегральное продвижение может быть применено к его базовому типу, prvalue типа перечисления с незаданной областью, базовый тип которого фиксирован, также может быть преобразован в prvalue продвинутого базового типа.
Prvalue для интеграла bit-field может быть преобразовано в prvalue типа, int если int может представлять все значения битового поля; в противном случае он может быть преобразован в unsigned int if, который unsigned int может представлять все значения битового поля. Если битовое поле еще больше, к нему не применяется интегральное продвижение. Если битовое поле имеет перечислимый тип, оно рассматривается как любое другое значение этого типа в целях продвижения.