C++ Type sous-jacent (et donc taille) d'un enum


Exemple

Si le type sous-jacent n'est pas explicitement spécifié pour un type d'énumération non segmenté, il est déterminé d'une manière définie par l'implémentation.

enum E {
    RED,
    GREEN,
    BLUE,
};
using T = std::underlying_type<E>::type; // implementation-defined

Toutefois, la norme exige que le type sous-jacent d’une énumération ne soit pas supérieur à int moins que int et unsigned int ne puissent pas représenter toutes les valeurs de l’énumération. Par conséquent, dans le code ci-dessus, T pourrait être int , unsigned int ou short , mais pas long long , pour donner quelques exemples.

Notez qu'une énumération a la même taille (renvoyée par sizeof ) que son type sous-jacent.