7 Standard conversions [conv]

7.15 Integer conversion rank [conv.rank]

Каждый целочисленный тип имеет следующее integer conversion rank определение:

  • Никакие два знаковых целочисленных типа, кроме char и signed char (если char знаковый), не должны иметь одинаковый ранг, даже если они имеют одинаковое представление.

  • Ранг целочисленного типа со знаком должен быть выше ранга любого целочисленного типа со знаком меньшего размера.

  • Ранг long long int должен быть выше ранга long int, который должен быть выше ранга int, который должен быть выше ранга short int, который должен быть выше ранга signed char.

  • Ранг любого целочисленного типа без знака должен равняться рангу соответствующего целочисленного типа со знаком.

  • Ранг любого стандартного целочисленного типа должен быть выше ранга любого расширенного целочисленного типа того же размера.

  • Ранг char равен рангу signed char и unsigned char.

  • Ранг bool должен быть меньше ранга всех других стандартных целочисленных типов.

  • Ряды char16_­t, char32_­tи wchar_­t равняются ряды их underlying types.

  • Ранг любого расширенного целочисленного типа со знаком относительно другого расширенного целочисленного типа со знаком того же размера определяется реализацией, но по-прежнему подчиняется другим правилам определения ранга преобразования целого числа.

  • Для всех целочисленных типов T1, T2и T3, если T1 имеет больший ранг T2 и T2 имеет больший ранг T3, то T1 должен иметь больший ранг, чем T3.

[ Note: Ранг целочисленного преобразования используется в определении integral promotions и usual arithmetic conversions. ] end note