C++ 具名要求:位掩码类型 (BitmaskType)

来自cppreference.com
< cpp‎ | named req
 
 
C++ 具名要求
基础
类型属性
库所属
容器
容器元素
(C++11)

迭代器
流 I/O
格式化
(C++20)
随机数
(C++11)    
并发
(C++11)
(C++11)
范围
其他
BitmaskType
(C++11)


 

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

要求

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

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

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

X |= Y 在对象 X 中设置值 Y
X &= ~Y 在对象 X 中清除值 Y
X & Y 非零结果指示已于对象 X 设置值 Y

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

用法

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

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