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<const char*> quiza_getenv(const char* n) { if(const char* x = std::getenv(n)) return x; else return {}; } 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) |