Namespaces
Variants

C++ named requirements: BitmaskType

From cppreference.net
C++ named requirements

Define un tipo que puede utilizarse para representar un conjunto de valores constantes o cualquier combinación de esos valores. Este rasgo es típicamente implementado por tipos enteros, std::bitset , o enumeraciones (con ámbito y sin ámbito) con sobrecargas de operadores adicionales.

Requisitos

El tipo de máscara de bits admite un número finito de elementos de máscara de bits, que son valores distintos de cero del tipo de máscara de bits, de modo que, para cualquier par Ci y Cj , Ci & Ci es distinto de cero y Ci & Cj es cero. Además, el valor 0 se utiliza para representar una máscara de bits vacía, sin valores establecidos.

Los operadores bit a bit operator & , operator | , operator ^ , operator~ , operator & = , operator | = , y operator ^ = están definidos para valores del tipo bitmask y tienen la misma semántica que los operadores integrados correspondientes en enteros sin signo tendrían si los elementos de la máscara de bits fueran las distintas potencias enteras de dos.

Las siguientes expresiones están bien formadas y tienen el siguiente significado para cualquier BitmaskType :

Expresión Significado
X | = Y establece el valor Y en el objeto X
X & = ~Y borra el valor Y en el objeto X
X & Y un resultado distinto de cero indica que el valor Y está establecido en el objeto X

Cada elemento de máscara de bits representable se define como un n inline (since C++17) constexpr valor del tipo de máscara de bits.

Biblioteca estándar

Los siguientes tipos de la biblioteca estándar satisfacen BitmaskType :

(desde C++17)
(desde C++11)
(desde C++17)

El código que depende de alguna opción de implementación particular (por ejemplo, int n = std:: ios_base :: hex ) no es portable porque std::ios_base::fmtflags no es necesariamente convertible implícitamente a int .