std::expected<T,E>:: transform
|
Plantilla principal
|
||
|
template
<
class
F
>
constexpr auto transform ( F && f ) & ; |
(1) | (desde C++23) |
|
template
<
class
F
>
constexpr auto transform ( F && f ) const & ; |
(2) | (desde C++23) |
|
template
<
class
F
>
constexpr auto transform ( F && f ) && ; |
(3) | (desde C++23) |
|
template
<
class
F
>
constexpr auto transform ( F && f ) const && ; |
(4) | (desde C++23) |
|
void
Especialización parcial
|
||
|
template
<
class
F
>
constexpr auto transform ( F && f ) & ; |
(5) | (desde C++23) |
|
template
<
class
F
>
constexpr auto transform ( F && f ) const & ; |
(6) | (desde C++23) |
|
template
<
class
F
>
constexpr auto transform ( F && f ) && ; |
(7) | (desde C++23) |
|
template
<
class
F
>
constexpr auto transform ( F && f ) const && ; |
(8) | (desde C++23) |
Si
*
this
representa un valor esperado, invoca
f
y retorna un objeto
std::expected
que contiene un valor esperado, el cual se inicializa con su resultado (o se inicializa por defecto si el tipo del resultado es
void
). De lo contrario, retorna un objeto
std::expected
que contiene un valor inesperado, el cual se inicializa con el valor inesperado de
*
this
.
Dado el tipo
U
como:
Si se satisface cualquiera de las siguientes condiciones, el programa está mal formado:
-
Uno es un tipo de valor válido parastd::expected. - std:: is_void_v < U > es false , y la siguiente declaración correspondiente está mal formada:
val
)
)
;
val
)
)
)
;
Contenidos |
Parámetros
| f | - | una función adecuada u Callable objeto cuya firma de llamada retorna un tipo que no es referencia |
Valor de retorno
Dada la expresión expr como:
val
)
val
)
)
Los valores de retorno se definen de la siguiente manera:
| Sobrecarga |
Valor de
has_value()
|
|
|---|---|---|
| true | false | |
| ( 1,2 ) |
|
std:: expected < U, E > ( std:: unexpect , error ( ) ) |
| ( 3,4 ) |
std::
expected
<
U, E
>
(
std::
unexpect
, std
::
move
(
error
(
)
)
)
|
|
| ( 5,6 ) | std:: expected < U, E > ( std:: unexpect , error ( ) ) | |
| ( 7,8 ) |
std::
expected
<
U, E
>
(
std::
unexpect
, std
::
move
(
error
(
)
)
)
|
|
Ejemplo
|
Esta sección está incompleta
Razón: sin ejemplo |
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Se aplica a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 3938 | C++23 | el valor esperado se obtenía mediante value ( ) [1] | cambiado a ** this |
| LWG 3973 | C++23 | el valor esperado se obtenía mediante ** this [2] |
cambiado a
val
|
-
↑
value()requiere queEsea copiable (ver LWG issue 3843 ), mientras queoperator*no lo requiere. - ↑ ** this puede activar la búsqueda dependiente de argumentos .
Véase también
retorna el propio
expected
si contiene un valor esperado; de lo contrario, retorna un
expected
que contiene el valor inesperado transformado
(función miembro pública) |