std::experimental::shared_future<T>:: then
|
template
<
class
F
>
future < /* siehe unten */ > then ( F && func ) const ; |
||
Hängen Sie die Fortsetzung func an * this . Das Verhalten ist undefiniert, wenn * this keinen zugehörigen gemeinsamen Zustand hat (d.h. valid ( ) == false ).
Erzeugt einen gemeinsam genutzten Zustand, der mit dem zurückzugebenden
future
-Objekt assoziiert ist, sowie eine Kopie
fd
von
func
, die so konstruiert wird, als ob
DECAY_COPY
(
std::
forward
<
F
>
(
func
)
)
im Thread ausgewertet würde, 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 ) , * 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
>
(
const
std::
experimental
::
shared_future
<
T
>
&
)
>
). Falls
U
gleich
std::
experimental
::
future
<
T2
>
für einen Typ
T2
ist, dann ist der Rückgabetyp von
then
gleich
std::
experimental
::
future
<
T2
>
, andernfalls ist er
std::
experimental
::
future
<
U
>
. Dies wird als
implizites Entpacken
bezeichnet.
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 true .
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 |