If the expression
get_completion_scheduler<set_value_t>(get_env(sch.schedule()))== sch
is ill-formed or evaluates to false,
the behavior of calling schedule(sch) is undefined.
just, just_error, and just_stopped are sender factories
whose asynchronous operations complete synchronously in their start operation
with a value completion operation,
an error completion operation, or
a stopped completion operation, respectively.
just-cpo is just_stopped and
sizeof...(ts)==0 is false.
Otherwise, it is expression-equivalent to
make-sender(just-cpo, product-type{ts...}).
For just, just_error, and just_stopped,
let set-cpo be
set_value, set_error, and set_stopped, respectively.
The exposition-only class template impls-for ([exec.snd.general])
is specialized for just-cpo as follows:
namespace std::execution {template<>structimpls-for<decayed-typeof<just-cpo>>:default-impls{staticconstexprautostart=[](auto& state, auto& rcvr)noexcept->void{auto&[...ts]= state;
set-cpo(std::move(rcvr), std::move(ts)...);
};
};
}
read_env is a sender factory for a sender
whose asynchronous operation completes synchronously in its start operation
with a value completion result equal to
a value read from the receiver's associated environment.
The exposition-only class template impls-for ([exec.snd.general])
is specialized for read_env as follows:
namespace std::execution {template<>structimpls-for<decayed-typeof<read_env>>:default-impls{staticconstexprauto start =[](auto query, auto& rcvr)noexcept->void{TRY-SET-VALUE(rcvr, query(get_env(rcvr)));
};
};
}