std::get_if (std::variant)
De cppreference.com
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...>>> |
||
template< std::size_t I, class... Types > constexpr std::add_pointer_t<const std::variant_alternative_t<I, std::variant<Types...>>> |
||
(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
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!
[editar] 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) |