diff --git a/execution.bs b/execution.bs
index b3513ae..3515da1 100644
--- a/execution.bs
+++ b/execution.bs
@@ -7842,7 +7842,7 @@ namespace std::execution {
}
- 2. impls-for<tag_t<let-cpo>>::get-state
is
+ 2. impls-for<decayed-typeof<let-cpo>>::get-state
is
is initialized with a callable object equivalent to the following:
@@ -7867,7 +7867,7 @@ namespace std::execution { specialization named by- 4.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 oftag_t<set-cpo>
. Let + with a return type ofdecayed-typeof<set-cpo>
. Let `as-tuple` be an alias template such thatas-tuple<Tag(Args...)>
denotes the typedecayed-tuple<Args...>
. Then @@ -7897,13 +7897,13 @@ namespace std::execution { start(op2);
impls-for<tag_t<let-cpo>>::complete
is
+ 4. impls-for<decayed-typeof<let-cpo>>::complete
is
is initialized with a callable object equivalent to the following:
[]<class Tag, class... Args> (auto, auto& state, auto& rcvr, Tag, Args&&... args) noexcept -> void { - if constexpr (same_as<Tag, tag_t<set-cpo>>) { + if constexpr (same_as<Tag, decayed-typeof<set-cpo>>) { TRY-EVAL(std::move(rcvr), let-bind(state, rcvr, std::forward<Args>(args)...)); } else { Tag()(std::move(rcvr), std::forward<Args>(args)...); @@ -7912,7 +7912,7 @@ namespace std::execution {6. Let `sndr` and `env` be subexpressions, and let `Sndr` be `decltype((sndr))`. - If
sender-for<Sndr, tag_t<let-cpo>>
is
+ If sender-for<Sndr, decayed-typeof<let-cpo>>
is
`false`, then the expression let-cpo.transform_env(sndr,
env)
is ill-formed. Otherwise, it is equal to
JOIN-ENV(let-env(sndr), FWD-ENV(env))
.