Namespaces
Variants

std::get_if (std::variant)

Depuis fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support du langage
Support des types (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (déprécié en C++20)
Fonctions de comparaison d'entiers
(C++20)(C++20)(C++20)    
(C++20)
Opérations de swap et de type
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Types de vocabulaire courants
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
 
Défini dans l'en-tête <variant>
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;
(1) (depuis C++17)
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;
(3) (depuis C++17)
template< class T, class... Types >
constexpr std::add_pointer_t<const T>
    get_if( const std::variant<Types...>* pv ) noexcept;
(4) (depuis C++17)
1,2) Accesseur non lançant basé sur un indice : Si pv n'est pas un pointeur nul et que 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 indice valide dans la variante.
3,4) Accesseur non lançant basé sur un type : Équivalent à (1) avec I étant l'indice commençant à zéro de T dans Types.... L'appel est mal formé si T n'est pas un élément unique de Types....

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)