std::expected<T,E>::operator->, std::expected<T,E>::operator*
De cppreference.com
<tbody>
</tbody>
| Plantilla primaria |
||
constexpr const T* operator->() const noexcept; |
(1) | (desde C++23) |
constexpr T* operator->() noexcept; |
(2) | (desde C++23) |
constexpr const T& operator*() const& noexcept; |
(3) | (desde C++23) |
constexpr T& operator*() & noexcept; |
(4) | (desde C++23) |
constexpr const T&& operator*() const&& noexcept; |
(5) | (desde C++23) |
constexpr T&& operator*() && noexcept; |
(6) | (desde C++23) |
| Especialización parcial void |
||
constexpr void operator*() const noexcept; |
(7) | (desde C++23) |
Accede al valor esperado contenido en *this.
1,2) Devuelve un puntero al valor esperado.
3-6) Devuelve una referencia al valor esperado.
7) No devuelve nada.
|
Si has_value() es |
(hasta C++26) |
|
Si has_value() es
|
(desde C++26) |
Valor de retorno
1,2)
std::addressof(val )3,4)
valNotas
Estos operadores no verifican si el opcional representa un valor esperado; los usuarios pueden hacerlo manualmente utilizando has_value() o operator bool(). Alternativamente, si se requiere acceso verificado, puede utilizarse value() o value_or().
Ejemplo
Ejecuta este código
#include <cassert>
#include <expected>
#include <iomanip>
#include <iostream>
#include <string>
int main()
{
using namespace std::string_literals;
std::expected<int, std::string> ex1 = 6;
assert(*ex1 == 6);
*ex1 = 9;
assert(*ex1 == 9);
// *ex1 = "error"s; // ERROR, ex1 contiene un valor esperado de tipo int
ex1 = std::unexpected("error"s);
// *ex1 = 13; // UB, ex1 contiene un valor no esperado
assert(ex1.value_or(42) == 42);
std::expected<std::string, bool> ex2 = "Luna"s;
std::cout << "ex2: " << std::quoted(*ex2) << ", tamaño: " << ex2->size() << '\n';
// Puedes "tomar" el valor esperado al llamar a operator* en un r-valor std::expected
auto taken = *std::move(ex2);
std::cout << std::quoted(taken) << " tomada\n"
"ex2: " << std::quoted(*ex2) << ", tamaño: " << ex2->size() << '\n';
}
Posible salida:
ex2: "Luna", tamaño: 4
"Luna" tomada
ex2: "", tamaño: 0
Véase también
Devuelve el valor expected. (función miembro pública) | |
Devuelve el valor expected si está presente. De lo contrario, otro valor. (función miembro pública) | |
| Comprueba si el objeto contiene un valor esperado. (función miembro pública) | |
| Devuelve el valor no esperado. (función miembro pública) |