std::experimental::optional
來自 cppreference.com
定義於標頭檔案 <experimental/optional> |
||
template< class T > class optional; |
(庫基礎 TS) | |
類模板 std::experimental::optional
管理一個可選的所含值,即一個可能存在也可能不存在的值。
optional
的常見用例是可能失敗的函式的返回值。與 std::pair<T,bool> 等其他方法不同,optional
能夠很好地處理構造開銷大的物件,並且更具可讀性,因為它明確表達了意圖。
在任何給定時間,任何 optional<T>
例項都要麼包含一個值,要麼不包含值。
如果一個 optional<T>
包含一個值,則該值保證作為 optional
物件記憶體空間的一部分進行分配,即不會發生動態記憶體分配。因此,optional
物件模擬的是一個物件,而不是一個指標,儘管定義了 operator*() 和 operator->()。
當型別為 optional<T> 的物件被上下文轉換為 bool 時,如果該物件包含一個值,則轉換返回 true;如果它不包含值,則返回 false。
在以下情況下,optional
物件包含一個值
- 物件用型別為
T
的值初始化。 - 物件從另一個包含值的
optional
賦值。
在以下情況下,物件不包含值
- 物件預設初始化。
- 物件用 std::experimental::nullopt_t 的值或一個不包含值的
optional
物件初始化。 - 物件從 std::experimental::nullopt_t 的值或從一個不包含值的
optional
賦值。
目錄 |
[編輯] 模板引數
T | - | 要管理初始化狀態的值的型別。該型別必須滿足 可銷燬 (Destructible) 的要求。 |
[編輯] 成員型別
成員型別 | 定義 |
value_type
|
T
|
[編輯] 成員函式
構造 optional 物件 (public member function) | |
如果存在,銷燬所包含的值 (public member function) | |
賦值內容 (public member function) | |
觀察器 | |
訪問所包含的值 (public member function) | |
檢查物件是否包含值 (public member function) | |
返回所包含的值 (public member function) | |
如果可用,返回包含的值,否則返回另一個值 (public member function) | |
修改器 | |
交換內容 (public member function) | |
就地構造包含的值 (public member function) |
[編輯] 成員物件
成員名稱 (Member name) | 定義 |
val (private) |
指向所含值的指標(指向同一物件的成員資料),此名稱僅用於說明。 |
[編輯] 非成員函式
比較 optional 物件(function template) | |
建立 optional 物件(function template) | |
特化 std::swap 演算法 (function) |
[編輯] 輔助類
特化 std::hash 演算法 (class template specialization) | |
(庫基礎 TS) |
指示未初始化狀態的可選型別 (class) |
(庫基礎 TS) |
用於就地構造可選型別的消歧標記型別 (class) |
(庫基礎 TS) |
當檢查式訪問不包含值的 optional 時丟擲的異常 (class) |
[編輯] 輔助物件
(庫基礎 TS) |
nullopt_t 型別的物件(function) |
(庫基礎 TS) |
型別為 std::experimental::in_place_t 的物件 (function) |