std::optional<T>::operator->, std::optional<T>::operator*
De cppreference.com
constexprconst T* operator->()const; | (1) | (desde C++17) |
constexpr T* operator->(); | (1) | (desde C++17) |
constexprconst T& operator*()const&; | (2) | (desde C++17) |
constexpr T& operator*()&; | (2) | (desde C++17) |
constexprconst T&& operator*()const&&; | (2) | (desde C++17) |
constexpr T&& operator*()&&; | (2) | (desde C++17) |
Accede al valor contenido.
1) Devuelve un puntero al valor contenido.
2) Devuelve una referencia al valor contenido.
El comportamiento está indefinido si *this no contiene un valor.
Contenido |
[editar]Parámetros
(Ninguno)
[editar]Valor de retorno
Puntero o referencia al valor contenido.
[editar]Excepciones
No lanza nada.
[editar]Notas
¡Este operador no comprueba si el objeto opcional contiene un valor! Puedes hacerlo manualmente usando has_value() o simplemente el operador operator bool(). Alternativamente, si se necesita un acceso comprobado, puede usarse value() o value_or().
[editar]Ejemplo
Ejecuta este código
#include <optional>#include <iostream>#include <string> int main(){usingnamespace std::string_literals; std::optional<int> opt1 =1;std::cout<<"opt1: "<<*opt1 <<'\n'; *opt1 =2;std::cout<<"opt1: "<<*opt1 <<'\n'; std::optional<std::string> opt2 ="abc"s;std::cout<<"opt2: "<<*opt2 <<" tamaño: "<< opt2->size()<<'\n'; // Puedes "tomar" el valor contenido llamando a operator*// sobre un valor rvalue a optional auto tomado =*std::move(opt2);std::cout<<"tomado: "<< tomado <<" opt2: "<<*opt2 <<"tamaño: "<< opt2->size()<<'\n';}
Salida:
opt1: 1 opt1: 2 opt2: abc tamaño: 3 tomado: abc opt2: tamaño: 0
[editar]Véase también
Devuelve el valor contenido. (función miembro pública) | |
Devuelve el valor contenido si está disponible, de otra manera, otro valor. (función miembro pública) |