std::get_if (std::variant)
De cppreference.com
| Definido en el archivo de 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;
|
||
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;
|
||
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....Parámetros
| I | - | Subíndice a buscar. |
| Type | - | Tipo único a buscar. |
| pv | - | Puntero al variante. |
Valor de retorno
Puntero al valor almacenado en el variante al que se apunta, o un puntero nulo si existe un error.
Ejemplo
Ejecuta este código
#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!
Véase también
(C++17) |
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) |