名稱空間
變體
操作

C++ 命名要求: BitmaskType

來自 cppreference.com
 
 
C++ 命名要求
基本
型別屬性
全庫範圍




Container(容器)
容器元素
迭代器 (Iterator)
流 I/O
格式化器
(C++20)
隨機數
併發
(C++11)
Ranges
多維檢視
其他

 

定義了一種型別,該型別可用於表示一組常量值或這些值的任意組合。此特性通常由整數型別、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

(C++17 起)
(C++11 起)
(C++11 起)
(C++11 起)
(C++11 起)
(C++17 起)
(C++17 起)
(C++17 起)
(C++17 起)

依賴於某些特定實現選項的程式碼(例如 int n = std::ios_base::hex)是不可移植的,因為 std::ios_base::fmtflags 不一定能隱式轉換為 int