Namespaces
Variants

std:: get_if (std::variant)

From cppreference.net
Utilities library
Défini dans l'en-tête <variant>
(1) (depuis C++17)
template < std:: size_t I, class ... Types >

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

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

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

get_if ( const std:: variant < Types... > * pv ) noexcept ;
(2) (depuis C++17)
template < class T, class ... Types >

constexpr std:: add_pointer_t < T >

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

constexpr std:: add_pointer_t < const T >

get_if ( const std:: variant < Types... > * pv ) noexcept ;
1) Accesseur non-lancant basé sur l'index : Si pv n'est pas un pointeur nul et pv - > index ( ) == I , retourne un pointeur vers la valeur stockée dans la variante pointée par pv . Sinon, retourne une valeur de pointeur nul. L'appel est mal formé si I n'est pas un index valide dans la variante.
2) Accesseur non-lanceur basé sur le type : Équivalent à (1) avec I étant l'index de base zéro de T dans Types... . L'appel est mal formé si T n'est pas un élément unique de Types... .

Table des matières

Paramètres du modèle

I - index à rechercher
Type - type unique à rechercher

Paramètres

pv - pointeur vers une variante

Valeur de retour

Pointeur vers la valeur stockée dans la variante pointée ou pointeur nul en cas d'erreur.

Exemple

#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);
}

Sortie :

variant value: 12
failed to get value!

Voir aussi

lit la valeur du variant selon l'index ou le type (si le type est unique), lance une exception en cas d'erreur
(modèle de fonction)