-7- impls-for<decayed-typeof<let-cpo>>::get-state
is initialized with a callable object equivalent to the following:
[]<class Sndr, class Rcvr>(Sndr&& sndr, Rcvr& rcvr) requires see below {
auto& [_, fn, child] = sndr;
using fn_t = decay_t<decltype(fn)>;
using env_t = decltype(let-env(child));
using args_variant_t = see below;
using ops2_variant_t = see below;
struct state-type {
fn_t fn; // exposition only
env_t env; // exposition only
args_variant_t args; // exposition only
ops2_variant_t ops2; // exposition only
};
return state-type{std::forward_like<Sndr>(fn), let-env(child), {}, {}};
}
-8- Let Sigs
be a pack of the arguments to the completion_signatures
specialization named by completion_signatures_of_t<child-type<Sndr>, env_of_t<Rcvr>>
. Let LetSigs
be a pack of those types in Sigs
with a return type of decayed-typeof<set-cpo>
. Let as-tuple
be an alias template such that as-tuple<Tag(Args...)>
denotes the type decayed-tuple<Args...>
. Then args_variant_t
denotes the type variant<monostate, as-tuple<LetSigs>...>
except with duplicate types removed.
-9- Given a type Tag
and a pack Args
, let as-sndr2
be an alias template such that as-sndr2<Tag(Args...)>
denotes the type call-result-t<Fn, decay_t<Args>&...>
. Then ops2_variant_t
denotes the type
variant<monostate, connect_result_t<as-sndr2<LetSigs>, receiver2<Rcvr, Envenv_t>>...>
except with duplicate types removed.
-10- The requires-clause constraining the above lambda is satisfied if and only if the types args_variant_t
and ops2_variant_t
are well-formed.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4