std::get_if (std::variant)
來自 cppreference.com
| 定義於標頭檔案 <variant> |
||
| (1) | (C++17 起) | |
| 模板< std::size_t I, 類... Types > constexpr std::add_pointer_t<std::variant_alternative_t<I, std::variant<Types...>>> |
||
| 模板< std::size_t I, 類... Types > constexpr std::add_pointer_t<const std::variant_alternative_t<I, std::variant<Types...>>> |
||
| (2) | (C++17 起) | |
| 模板< 類 T, 類... Types > constexpr std::add_pointer_t<T> |
||
| 模板< 類 T, 類... Types > constexpr std::add_pointer_t<const T> |
||
1) 基於索引的非丟擲訪問器:如果 pv 不是空指標,且 pv->index() == I,則返回指向 pv 所指向的變體中儲存的值的指標。否則,返回空指標值。如果
I 不是變體中的有效索引,則呼叫是 ill-formed(格式錯誤)。2) 基於型別的非丟擲訪問器:等同於 (1),其中
I 是 T 在 Types... 中的零基索引。如果 T 不是 Types... 的唯一元素,則呼叫是 ill-formed(格式錯誤)。目錄 |
[編輯] 模板引數
| I | - | 要查詢的索引 |
| 型別 | - | 要查詢的唯一型別 |
[編輯] 引數
| pv | - | 指向變體的指標 |
[編輯] 返回值
指向所指向變體中儲存的值的指標,或出錯時為 null 指標。
[編輯] 示例
執行此程式碼
#include <iostream> #include <variant> int main() { auto check_value = [](const std::variant<int, float>& v) { if (const int* pval = std::get_if<int>(&v)) std::cout << "variant value: " << *pval << '\n'; else std::cout << "failed to get value!" << '\n'; }; std::variant<int, float> v{12}, w{3.f}; check_value(v); check_value(w); }
輸出
variant value: 12 failed to get value!
[編輯] 參閱
| (C++17) |
根據索引或型別(如果型別唯一)讀取變體的值,出錯時丟擲異常 (函式模板) |