名稱空間
變體
操作

std::get_if (std::variant)

來自 cppreference.com
< cpp‎ | 工具‎ | 變體
 
 
工具庫
語言支援
型別支援(基本型別、RTTI)
庫特性測試宏 (C++20)
程式工具
變參函式
協程支援 (C++20)
契約支援 (C++26)
三路比較

通用工具
關係運算符 (C++20 中棄用)
整數比較函式
交換型別操作
常用詞彙型別



 
 
定義於標頭檔案 <variant>
(1) (C++17 起)
模板< std::size_t I, ... Types >

constexpr std::add_pointer_t<std::variant_alternative_t<I, std::variant<Types...>>>

    get_if( std::variant<Types...>* pv ) noexcept;
模板< std::size_t I, ... Types >

constexpr std::add_pointer_t<const std::variant_alternative_t<I, std::variant<Types...>>>

    get_if( const std::variant<Types...>* pv ) noexcept;
(2) (C++17 起)
模板< T, ... Types >

constexpr std::add_pointer_t<T>

    get_if( std::variant<Types...>* pv ) noexcept;
模板< T, ... Types >

constexpr std::add_pointer_t<const T>

    get_if( const std::variant<Types...>* pv ) noexcept;
1) 基於索引的非丟擲訪問器:如果 pv 不是空指標,且 pv->index() == I,則返回指向 pv 所指向的變體中儲存的值的指標。否則,返回空指標值。如果 I 不是變體中的有效索引,則呼叫是 ill-formed(格式錯誤)。
2) 基於型別的非丟擲訪問器:等同於 (1),其中 ITTypes... 中的零基索引。如果 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!

[編輯] 參閱

根據索引或型別(如果型別唯一)讀取變體的值,出錯時丟擲異常
(函式模板) [編輯]
English 日本語 中文(简体) 中文(繁體)