inline Properties operator|(Properties a, Properties b) { // Note: Unary '+' forces integral promotion return static_cast<Properties>(+a | +b); }
Une question que je me pose (pas de standard sous la main cette semaine) est de savoir si on a le droit d'utiliser des valeurs pour une enum plus petites ou plus grandes que les valeurs extrêmes définies dans l'enum. En particulier, serait-il mieux d'ajouter : PROPERTY0=0 et PROPERTYMAX=1<<4-1 ?
inline Properties operator|(Properties a, Properties b)
{ // Note: Unary '+' forces integral promotion
return static_cast<Properties>(+a | +b);
}
Une question que je me pose (pas de standard sous la main cette semaine)
est de savoir si on a le droit d'utiliser des valeurs pour une enum plus
petites ou plus grandes que les valeurs extrêmes définies dans l'enum. En
particulier, serait-il mieux d'ajouter :
PROPERTY0=0 et PROPERTYMAX=1<<4-1 ?
inline Properties operator|(Properties a, Properties b) { // Note: Unary '+' forces integral promotion return static_cast<Properties>(+a | +b); }
Une question que je me pose (pas de standard sous la main cette semaine) est de savoir si on a le droit d'utiliser des valeurs pour une enum plus petites ou plus grandes que les valeurs extrêmes définies dans l'enum. En particulier, serait-il mieux d'ajouter : PROPERTY0=0 et PROPERTYMAX=1<<4-1 ?
> inline Properties operator|(Properties a, Properties b) > { // Note: Unary '+' forces integral promotion > return static_cast<Properties>(+a | +b); > }
Une question que je me pose (pas de standard sous la main cette semaine) est de savoir si on a le droit d'utiliser des valeurs pour une enum plus petites ou plus grandes que les valeurs extrêmes définies dans l'enum.
Oui. La norme garantit toute valeur qui tiendra dans les bits utilisés. Littéralement :
For an enumeration where e[min] is the smallest enumerator and e[max] is the largest, the values of the enumeration are the values of the underlying type in the range bmin to bmax, where bmin and bmax are, respectively, the smallest and largest values of the smallest bit-field that can store e[min] and e[max].81) It is possible to define an enumeration that has values not defined by any of its enumerators.
L'utilisation des enum pour définir les champs de bits est trop répandue et trop consacrée pour que ça ne marche pas.
Dans la pratique, évidemment, toute valeur qui tient dans le type soujaçant fonctionnera.
En particulier, serait-il mieux d'ajouter : PROPERTY0=0 et PROPERTYMAX=1<<4-1 ?
Ce n'est pas la peine.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Apr 2, 6:15 am, Marc <marc.gli...@gmail.com> wrote:
> inline Properties operator|(Properties a, Properties b)
> { // Note: Unary '+' forces integral promotion
> return static_cast<Properties>(+a | +b);
> }
Une question que je me pose (pas de standard sous la main
cette semaine) est de savoir si on a le droit d'utiliser
des valeurs pour une enum plus petites ou plus grandes que
les valeurs extrêmes définies dans l'enum.
Oui. La norme garantit toute valeur qui tiendra dans les
bits utilisés. Littéralement :
For an enumeration where e[min] is the smallest
enumerator and e[max] is the largest, the values of the
enumeration are the values of the underlying type in the
range bmin to bmax, where bmin and bmax are,
respectively, the smallest and largest values of the
smallest bit-field that can store e[min] and e[max].81)
It is possible to define an enumeration that has values
not defined by any of its enumerators.
L'utilisation des enum pour définir les champs de bits est trop
répandue et trop consacrée pour que ça ne marche pas.
Dans la pratique, évidemment, toute valeur qui tient dans le
type soujaçant fonctionnera.
En particulier, serait-il mieux d'ajouter :
PROPERTY0=0 et PROPERTYMAX=1<<4-1 ?
Ce n'est pas la peine.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
> inline Properties operator|(Properties a, Properties b) > { // Note: Unary '+' forces integral promotion > return static_cast<Properties>(+a | +b); > }
Une question que je me pose (pas de standard sous la main cette semaine) est de savoir si on a le droit d'utiliser des valeurs pour une enum plus petites ou plus grandes que les valeurs extrêmes définies dans l'enum.
Oui. La norme garantit toute valeur qui tiendra dans les bits utilisés. Littéralement :
For an enumeration where e[min] is the smallest enumerator and e[max] is the largest, the values of the enumeration are the values of the underlying type in the range bmin to bmax, where bmin and bmax are, respectively, the smallest and largest values of the smallest bit-field that can store e[min] and e[max].81) It is possible to define an enumeration that has values not defined by any of its enumerators.
L'utilisation des enum pour définir les champs de bits est trop répandue et trop consacrée pour que ça ne marche pas.
Dans la pratique, évidemment, toute valeur qui tient dans le type soujaçant fonctionnera.
En particulier, serait-il mieux d'ajouter : PROPERTY0=0 et PROPERTYMAX=1<<4-1 ?
Ce n'est pas la peine.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Marc
James Kanze wrote:
Une question que je me pose (pas de standard sous la main cette semaine) est de savoir si on a le droit d'utiliser des valeurs pour une enum plus petites ou plus grandes que les valeurs extrêmes définies dans l'enum.
Oui. La norme garantit toute valeur qui tiendra dans les bits utilisés. Littéralement :
[... du standard]
Merci :-)
James Kanze wrote:
Une question que je me pose (pas de standard sous la main
cette semaine) est de savoir si on a le droit d'utiliser
des valeurs pour une enum plus petites ou plus grandes que
les valeurs extrêmes définies dans l'enum.
Oui. La norme garantit toute valeur qui tiendra dans les
bits utilisés. Littéralement :
Une question que je me pose (pas de standard sous la main cette semaine) est de savoir si on a le droit d'utiliser des valeurs pour une enum plus petites ou plus grandes que les valeurs extrêmes définies dans l'enum.
Oui. La norme garantit toute valeur qui tiendra dans les bits utilisés. Littéralement :