[exec.getcomplsigs] (original) (raw)
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 expressiontransform_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_signaturesif 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.