C++ 具名要求: BitmaskType

来自cppreference.com
< cpp‎ | named req
 
 
 

定义能用来表示一组常量值或这些值的任何组合的类型。此类型常以整数类型、 std::bitset 、或带附加运算符重载的枚举(有作用域和无作用域)实现。

要求

位掩码类型支持有限数量的位掩码元素,它们拥有各不相同的位掩码类型的非零值,满足对于任意对 Ci 与 Cj , Ci & Ci 非零而 Ci & Cj 为零。另外,值 0 用于表示空位掩码,而无值集合。

逐位运算符 operator&operator|operator^operator~operator&=operator|=operator^= 对位掩码类型的值定义,且拥有无符号整数上会有的对应内建运算符的相同语义,若位掩码元素为相异的二的幂。

对任何位位掩码类型 (BitmaskType) ,下列表达式为良式且拥有下列含义

X |= Y 在对象 X 中设置值 Y
X &= ~Y 在对象 X 中清除值 Y
(X&Y) != 0 指示值 Y 已设置于对象 X

每个可表示的位掩码元素定义为位掩码类型的 inline (C++17 起)constexpr 值。

用法

下列标准库类型满足位掩码类型 (BitmaskType) :

依赖某些特定实现选项的代码(例如 int n = std::ios_base::hex )是不可移植的,因为 std::ios_base::fmtflags 不需要可隐式转换为 int