std::experimental::future<T>:: then
|
template
<
class
F
>
future < /* siehe unten */ > then ( F && func ) ; |
||
Hängen Sie die Fortsetzung func an * this . Das Verhalten ist undefiniert, wenn * this keinen assoziierten gemeinsamen Zustand besitzt (d.h., valid ( ) == false ).
Erzeugt einen gemeinsam genutzten Zustand, der mit dem zurückzugebenden
future
-Objekt assoziiert ist, und eine Kopie
fd
von
func
, konstruiert wie durch
DECAY_COPY
(
std::
forward
<
F
>
(
func
)
)
ausgewertet im Thread, der
then
aufruft, wobei
DECAY_COPY
definiert ist als
template<class T> std::decay_t<T> DECAY_COPY(T&& v) { return std::forward<T>(v); } |
Wenn der gemeinsam genutzte Zustand, der derzeit mit * this assoziiert ist, bereit ist, wird die Fortsetzung INVOKE ( std :: move ( fd ) , std :: move ( * this ) ) in einem nicht spezifizierten Ausführungsthread aufgerufen, wobei INVOKE die in Callable definierte Operation ist. Wenn dieser Ausdruck ungültig ist, ist das Verhalten undefiniert.
Jeder von der Fortsetzung zurückgegebene Wert wird als Ergebnis im gemeinsamen Zustand des zurückgegebenen
future
-Objekts gespeichert. Jede Ausnahme, die von der Ausführung der Fortsetzung propagiert wird, wird als außergewöhnliches Ergebnis im gemeinsamen Zustand des zurückgegebenen
future
-Objekts gespeichert.
Sei
U
der Rückgabetyp der Fortsetzung (d.h.
std::
result_of_t
<
std::
decay_t
<
F
>
(
std::
experimental
::
future
<
T
>
)
>
). Falls
U
std::
experimental
::
future
<
T2
>
für einen Typ
T2
ist, dann ist der Rückgabetyp von
then
std::
experimental
::
future
<
T2
>
, andernfalls ist es
std::
experimental
::
future
<
U
>
. Dies ist bekannt als
implizites Entpacken
.
Wenn implizites Entpacken stattfindet und die Fortsetzung einen ungültigen
future
zurückgibt, wird der gemeinsame Zustand mit einer Ausnahme vom Typ
std::future_error
bereitgestellt, mit einer Fehlerbedingung von
std::future_errc::broken_promise
.
Nachdem diese Funktion zurückkehrt, valid ( ) ist false .
Parameter
| func | - | eine anzuhängende Fortsetzung |
Rückgabewert
Ein std::experimental::future Objekt, das mit dem durch dieses Objekt erzeugten gemeinsamen Zustand verknüpft ist. valid ( ) == true für das zurückgegebene Objekt.
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |