@@ -71,10 +71,9 @@ namespace nv::execution::_strm
7171 requires std::invocable<Fun, __decay_t <Args>...>
7272 void set_value (Args&&... args) noexcept
7373 {
74- using result_t = std::invoke_result_t <Fun, __decay_t <Args>...>;
75- constexpr bool does_not_return_a_value = std::is_same_v<void , result_t >;
76- _strm::opstate_base<Receiver>& opstate = opstate_;
77- cudaStream_t stream = opstate.get_stream ();
74+ using result_t = std::invoke_result_t <Fun, __decay_t <Args>...>;
75+ constexpr bool does_not_return_a_value = std::is_same_v<void , result_t >;
76+ cudaStream_t stream = opstate_.get_stream ();
7877
7978 if constexpr (does_not_return_a_value)
8079 {
@@ -83,29 +82,29 @@ namespace nv::execution::_strm
8382 if (cudaError_t status = STDEXEC_LOG_CUDA_API (cudaPeekAtLastError ());
8483 status == cudaSuccess)
8584 {
86- opstate .propagate_completion_signal (STDEXEC::set_value);
85+ opstate_ .propagate_completion_signal (STDEXEC::set_value);
8786 }
8887 else
8988 {
90- opstate .propagate_completion_signal (STDEXEC::set_error, std::move (status));
89+ opstate_ .propagate_completion_signal (STDEXEC::set_error, std::move (status));
9190 }
9291 }
9392 else
9493 {
9594 using decayed_result_t = __decay_t <result_t >;
96- auto * d_result = static_cast <decayed_result_t *>(opstate .temp_storage_ );
95+ auto * d_result = static_cast <decayed_result_t *>(opstate_ .temp_storage_ );
9796 _then_kernel_with_result<Args&&...>
9897 <<<1 , 1 , 0 , stream>>> (std::move (f_), d_result, static_cast <Args&&>(args)...);
99- opstate .defer_temp_storage_destruction (d_result);
98+ opstate_ .defer_temp_storage_destruction (d_result);
10099
101100 if (cudaError_t status = STDEXEC_LOG_CUDA_API (cudaPeekAtLastError ());
102101 status == cudaSuccess)
103102 {
104- opstate .propagate_completion_signal (STDEXEC::set_value, std::move (*d_result));
103+ opstate_ .propagate_completion_signal (STDEXEC::set_value, std::move (*d_result));
105104 }
106105 else
107106 {
108- opstate .propagate_completion_signal (STDEXEC::set_error, std::move (status));
107+ opstate_ .propagate_completion_signal (STDEXEC::set_error, std::move (status));
109108 }
110109 }
111110 }
@@ -185,7 +184,7 @@ namespace nv::execution::_strm
185184 static_cast <Self&&>(self).sndr_ ,
186185 static_cast <Receiver&&>(rcvr),
187186 [&](_strm::opstate_base<Receiver>& stream_provider) -> receiver_t <Receiver>
188- { return receiver_t <Receiver>(self.fun_ , stream_provider); });
187+ { return receiver_t <Receiver>(static_cast <Self&&>( self) .fun_ , stream_provider); });
189188 }
190189 STDEXEC_EXPLICIT_THIS_END (connect)
191190
@@ -209,11 +208,11 @@ namespace nv::execution::_strm
209208 struct transform_sender_for <STDEXEC::then_t >
210209 {
211210 template <class Env , class Fn , class CvSender >
212- auto operator ()(Env const &, __ignore, Fn fun, CvSender&& sndr) const
211+ auto operator ()(Env const &, __ignore, Fn&& fun, CvSender&& sndr) const
213212 {
214213 if constexpr (stream_completing_sender<CvSender, Env>)
215214 {
216- using _sender_t = then_sender<__decay_t <CvSender>, Fn >;
215+ using _sender_t = then_sender<__decay_t <CvSender>, __decay_t <Fn> >;
217216 return _sender_t {static_cast <CvSender&&>(sndr), static_cast <Fn&&>(fun)};
218217 }
219218 else
0 commit comments