跳到主要内容

C++ 命名要求:BitmaskType

定义一种类型,该类型可用于表示一组常量值或这些值的任何组合。此特性通常由整型、std::bitset 或带有额外运算符重载的枚举(有作用域和无作用域)实现。

要求

位掩码类型支持有限数量的位掩码元素,这些元素是位掩码类型中不同的非零值,这样,对于任何一对 CiCjCi & Ci非零的,而 Ci & Cj 是零。此外,值 0 用于表示空位掩码,没有设置任何值。

位掩码类型的值定义了位运算符 operator&operator|operator^operator~operator&=operator|=operator^=,并且它们具有与无符号整数上相应内置运算符相同的语义,如果位掩码元素是不同的整数次幂。

以下表达式对于任何 BitmaskType 都是格式良好且具有以下含义的:

pubX |= Y在对象 X 中设置值 Y
pubX &= ~Y清除对象 X 中值 Y
pubX & Y非零结果表示对象 X 中设置了值 Y

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

用法

以下标准库类型满足 BitmaskType

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

C++ 命名要求:BitmaskType

定义一种类型,该类型可用于表示一组常量值或这些值的任何组合。此特性通常由整型、std::bitset 或带有额外运算符重载的枚举(有作用域和无作用域)实现。

要求

位掩码类型支持有限数量的位掩码元素,这些元素是位掩码类型中不同的非零值,这样,对于任何一对 CiCjCi & Ci非零的,而 Ci & Cj 是零。此外,值 0 用于表示空位掩码,没有设置任何值。

位掩码类型的值定义了位运算符 operator&operator|operator^operator~operator&=operator|=operator^=,并且它们具有与无符号整数上相应内置运算符相同的语义,如果位掩码元素是不同的整数次幂。

以下表达式对于任何 BitmaskType 都是格式良好且具有以下含义的:

pubX |= Y在对象 X 中设置值 Y
pubX &= ~Y清除对象 X 中值 Y
pubX & Y非零结果表示对象 X 中设置了值 Y

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

用法

以下标准库类型满足 BitmaskType

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