std::optional<T>::operator->, std::optional<T>::operator*
De cppreference.com
<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
Ejecuta este código
#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) | |
| Devuelve el valor contenido si está disponible, de otra manera, otro valor. (función miembro pública) |