Espacios de nombres
Variantes

std::optional<T>::operator->, std::optional<T>::operator*

De cppreference.com
 
 
Biblioteca de servicios
 
 
<tbody> </tbody>
constexpr const T* operator->() const;
(1) (desde C++17)
constexpr T* operator->();
(1) (desde C++17)
constexpr const T& operator*() const&;
(2) (desde C++17)
constexpr T& operator*() &;
(2) (desde C++17)
constexpr const 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.

Parámetros

(Ninguno)

Valor de retorno

Puntero o referencia al valor contenido.

Excepciones

No lanza nada.

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().

Ejemplo

#include <optional>
#include <iostream>
#include <string>

int main()
{
    using namespace 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

Véase también

Devuelve el valor contenido.
(función miembro pública) [editar]
Devuelve el valor contenido si está disponible, de otra manera, otro valor.
(función miembro pública) [editar]