std::optional<T>::value_or
De cppreference.com
template<class U > constexpr T value_or( U&& default_value )const&; | (1) | (desde C++17) |
template<class U > constexpr T value_or( U&& default_value )&&; | (2) | (desde C++17) |
Devuelve el valor contenido si *this tiene un valor; de lo contrario, devuelve default_value
.
1) Equivalente a bool(*this)?**this :static_cast<T>(std::forward<U>(default_value))
2) Equivalente a bool(*this)? std::move(**this):static_cast<T>(std::forward<U>(default_value))
Contenido |
[editar]Parámetros
default_value | - | El valor a usar en caso que *this esté vacío. |
Requisitos de tipo | ||
-T debe satisfacer los requisitos de CopyConstructible para poder usar la sobrecarga (1). | ||
-T debe satisfacer los requisitos de MoveConstructible para poder usar la sobrecarga (2). | ||
-U&& debe ser convertible a T |
[editar]Valor de retorno
El valor actual si *this tiene un valor; de lo contrario, default_value
.
[editar]Excepciones
Cualquier excepción lanzada por el constructor seleccionado del valor de retorno T
.
[editar]Ejemplo
Ejecuta este código
#include <optional>#include <iostream>#include <cstdlib> std::optional<constchar*> quiza_getenv(constchar* n){if(constchar* x =std::getenv(n))return x;elsereturn{};} int main(){std::cout<< quiza_getenv("MYPWD").value_or("(ninguno)")<<'\n';}
Posible salida:
(ninguno)
[editar]Véase también
Devuelve el valor contenido. (función miembro pública) |