Namespaces
Variants

C++ named requirements: BitmaskType

From cppreference.net
C++ named requirements

Définit un type pouvant être utilisé pour représenter un ensemble de valeurs constantes ou toute combinaison de ces valeurs. Cette caractéristique est généralement implémentée par les types entiers, std::bitset , ou les énumérations (scopées et non scopées) avec des surcharges d'opérateurs supplémentaires.

Exigences

Le type masque de bits prend en charge un nombre fini d'éléments de masque de bits, qui sont des valeurs distinctes non nulles du type masque de bits, de sorte que, pour toute paire Ci et Cj , Ci & Ci est non nul et Ci & Cj est nul. De plus, la valeur 0 est utilisée pour représenter un masque de bits vide, sans aucune valeur définie.

Les opérateurs bit à bit operator & , operator | , operator ^ , operator~ , operator & = , operator | = , et operator ^ = sont définis pour les valeurs du type masque de bits et ont la même sémantique que les opérateurs intégrés correspondants sur les entiers non signés auraient si les éléments du masque de bits étaient les puissances de deux entières distinctes.

Les expressions suivantes sont bien formées et ont la signification suivante pour tout BitmaskType :

Expression Signification
X | = Y définit la valeur Y dans l'objet X
X & = ~Y efface la valeur Y dans l'objet X
X & Y un résultat non nul indique que la valeur Y est définie dans l'objet X

Chaque élément de masque de bits représentable est défini comme une n inline (depuis C++17) constexpr valeur du type masque de bits.

Bibliothèque standard

Les types de bibliothèque standard suivants satisfont BitmaskType :

(depuis C++17)
(depuis C++11)
(depuis C++17)

Le code qui repose sur une option d'implémentation particulière (par exemple int n = std:: ios_base :: hex ) n'est pas portable car std::ios_base::fmtflags n'est pas nécessairement implicitement convertible en int .