std::optional<T>::value_or
De cppreference.com
<tbody>
</tbody>
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))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
| ||
Valor de retorno
El valor actual si *this tiene un valor; de lo contrario, default_value.
Excepciones
Cualquier excepción lanzada por el constructor seleccionado del valor de retorno T.
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)
Véase también
| Devuelve el valor contenido. (función miembro pública) |