get_completion_signatures is a customization point object
. Let
sndr be an expression
such that
decltype((sndr)) is
Sndr, and
let
env be an expression
such that
decltype((env)) is
Env. Let
new_sndr be the expression
transform_sender(decltype(get-domain-late(sndr, env)), sndr, env), and
let
NewSndr be
decltype((new_sndr)). Then
get_completion_signatures(sndr, env) is expression-equivalent to
(void(sndr), void(env), CS())
except that
void(sndr) and
void(env) are
indeterminately sequenced,
where
CS is:
- decltype(new_sndr.get_completion_signatures(env))
if that type is well-formed,
- Otherwise, remove_cvref_t<NewSndr>::completion_signatures
if that type is well-formed,
- Otherwise,
if is-awaitable<NewSndr, env-promise<Env>> is true,
then:
completion_signatures<
SET-VALUE-SIG(await-result-type<NewSndr, env-promise<Env>>),
set_error_t(exception_ptr),
set_stopped_t()>
- Otherwise, CS is ill-formed.