Espacios de nombres
Variantes
Acciones

std::get_if (std::variant)

De cppreference.com
< cpp‎ | utility‎ | variant
 
 
Biblioteca de servicios
 
 
Definido en el archivo de encabezado <variant>
(1) (desde 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) (desde 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) Captador que no lanza basado en subíndice: Si pv no es un puntero nulo y pv->index() == I, devuelve un puntero al valor almacenado en el variante al que apunta pv. De lo contrario, devuelve un valor de puntero nulo. La llamada está mal formada si I no es un subíndice válido en el variante.
2) Captador que no lanza basado en tipo: Equivalente a (1) con I siendo el subíndice basado en cero de T en Types.... La llamada está mal formada si T no es un elemento único de Types....

Contenido

[editar] Parámetros

I - Subíndice a buscar.
Type - Tipo único a buscar.
pv - Puntero al variante.

[editar] Valor de retorno

Puntero al valor almacenado en el variante al que se apunta, o un puntero nulo si existe un error.

[editar] Ejemplo

#include <variant>
#include <iostream>
 
int main()
{
    auto check_value = [](const std::variant<int, float>& v)
    {
        if(const int* pval = std::get_if<int>(&v))
          std::cout << "valor variante: " << *pval << '\n'; 
        else 
          std::cout << "¡falla al captar valor!" << '\n'; 
    };
 
    std::variant<int, float> v{12}, w{3.f};
    check_value(v);
    check_value(w);
}

Salida:

valor variante: 12
¡falla al captar valor!

[editar] Véase también

Lee el valor del variante dado el subíndice o el tipo (si el tipo es único), lanza una excepción si existe un error.
(plantilla de función) [editar]