std::get (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::variant_alternative_t<I, std::variant<Types...>>& |
||
template< std::size_t I, class... Types > constexpr std::variant_alternative_t<I, std::variant<Types...>>&& |
||
template< std::size_t I, class... Types > constexpr const std::variant_alternative_t<I, std::variant<Types...>>& |
||
template< std::size_t I, class... Types > constexpr const std::variant_alternative_t<I, std::variant<Types...>>&& |
||
(2) | (desde C++17) | |
template< class T, class... Types > constexpr T& get( std::variant<Types...>& v ); |
||
template< class T, class... Types > constexpr T&& get( std::variant<Types...>&& v ); |
||
template< class T, class... Types > constexpr const T& get( const std::variant<Types...>& v ); |
||
template< class T, class... Types > constexpr const T&& get( const std::variant<Types...>&& v ); |
||
1) Captador de valor basado en subíndice: Si v.index() == I, devuelve una referencia al valor almacenado en
v
. De lo contrario, lanza std::bad_variant_access. La llamada está mal formada si I
no es un subíndice válido en el variante.2) Captador de valor basado en tipo: Si v mantiene la alternativa
T
, devuelve una referencia al valor almacenado en v
. De lo contrario, lanza std::bad_variant_access. La llamada está mal formada si T
no es un elemento único de Types...
.Contenido |
[editar] Parámetros de plantilla
I | - | Subíndice a buscar. |
T | - | Tipo único a buscar. |
Types... | - | Tipos que forman el variant e.
|
[editar] Parámetros
v | - | Un variant e
|
[editar] Valor de retorno
Referencia al valor almacenado en el variante.
[editar] Excepciones
1,2) Lanza std::bad_variant_access cuando hay errores.
[editar] Ejemplo
Ejecuta este código
#include <variant> #include <string> #include <iostream> int main() { std::variant<int, float> v{12}, w; std::cout << std::get<int>(v) << '\n'; w = std::get<int>(v); w = std::get<0>(v); // el mismo efecto que la línea anterior // std::get<double>(v); // ERROR: no hay double en [int, float] // std::get<3>(v); // ERROR: los valores de subíndice válidos son 0 y 1 try { w = 42.0f; std::cout << std::get<float>(w) << '\n'; // de acuerdo, imprime 42 w = 42; std::cout << std::get<float>(w) << '\n'; // lanza } catch (std::bad_variant_access const& ex) { std::cout << ex.what() << ": w contenía int, no float\n"; } }
Posible salida:
12 42 Subíndice inesperado: w contenía int, no float
[editar] Véase también
(C++17) |
Obtiene un puntero al valor de un variante al que se apunta dado el subíndice del tipo (si es único), devuelve nulo cuando existe un error. (plantilla de función) |
La tupla accede al elemento especificado. (plantilla de función) | |
(C++11) |
Accede a un elemento de un array . (plantilla de función) |
(C++11) |
accede a un elemento de un par. (plantilla de función) |