Namespaces
Variants

std::get_if (std::variant)

De es.cppreference.net
 
 
Biblioteca de utilidades
Soporte del lenguaje
Soporte de tipos (tipos básicos, RTTI)
Macros de prueba de características de biblioteca (C++20)
Utilidades de programa
Funciones variádicas
Soporte de corrutinas (C++20)
Soporte de contratos (C++26)
Comparación tripartita
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilidades generales
Operadores relacionales (obsoleto en C++20)
 
 
Definido en el encabezado <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) (desde 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) (desde C++17)
template< class T, class... Types >
constexpr std::add_pointer_t<T>
    get_if( std::variant<Types...>* pv ) noexcept;
(3) (desde C++17)
template< class T, class... Types >
constexpr std::add_pointer_t<const T>
    get_if( const std::variant<Types...>* pv ) noexcept;
(4) (desde C++17)
1,2) Acceso sin lanzamiento basado en índice: Si pv no es un puntero nulo y pv->index() == I, devuelve un puntero al valor almacenado en la variante apuntada por pv. De lo contrario, devuelve un valor de puntero nulo. La llamada está mal formada si I no es un índice válido en la variante.
3,4) Acceso sin lanzamiento basado en tipo: Equivalente a (1) con I siendo el índice basado en cero de T en Types.... La llamada está mal formada si T no es un elemento único de Types....

Parámetros de plantilla

I - índice a buscar
Type - tipo único a buscar

Parámetros

pv - puntero a una variante

Valor de retorno

Puntero al valor almacenado en la variante apuntada o puntero nulo en caso de error.

Ejemplo

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

Salida:

variant value: 12
failed to get value!

Véase también

lee el valor del variant dado el índice o el tipo (si el tipo es único), lanza una excepción en caso de error
(plantilla de función)