Effects: An execution of
call_Âonce that does not call its
func is a
passive execution
. An execution of
call_Âonce that calls its
func
is an
active execution
. An active execution calls
INVOKE(​std​::​forward<Callable>(func),
std​::​forward<Args>(args)...). An exceptional execution propagates the exception to the caller of
call_Âonce. Among all executions of
call_Âonce for any given
once_Âflag: at most one is a returning execution; if there is a
returning execution, it is the last active execution; and there are
passive executions only if there is a returning execution
. [
Note 1:
Passive
executions allow other threads to reliably observe the results produced by the
earlier returning execution
. —
end note]