MCPcopy Create free account
hub / github.com/NVIDIA/stdexec / STDEXEC_IF_OK

Method STDEXEC_IF_OK

include/exec/repeat_until.hpp:282–310  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

280 __transform_values<__child_t>,
281 __transform_errors);
282 STDEXEC_IF_OK(__sigs)
283 {
284 // The repeat_until sender is a dependent sender if one of the following is
285 // true:
286 // - the child sender is a dependent sender, or
287 // - the trampoline scheduler's sender is a dependent sender, or
288 // - sizeof...(_Env) == 0 and the child sender does not have a
289 // set_error(exception_ptr) completion.
290 constexpr bool __is_dependent = (sizeof...(_Env) == 0)
291 && (dependent_sender<__bouncer_t>
292 || !__sigs.__contains(__eptr_completion));
293 if constexpr (__is_dependent)
294 {
295 return exec::throw_compile_time_error<dependent_sender_error,
296 _WITH_PRETTY_SENDER_<__child_t>>();
297 }
298 else
299 {
300 using __has_nothrow_connect_t =
301 __mbool<(__nothrow_connectable<__child_t, __receiver_archetype<_Env>> || ...)>;
302 constexpr auto __eptr_sigs = __eptr_completion_unless_t<__has_nothrow_connect_t>();
303 constexpr auto __bouncer_sigs = exec::transform_completion_signatures(
304 get_completion_signatures<__bouncer_t, _Env...>(),
305 exec::ignore_completion()); // drop the set_value_t() completion from the
306 // trampoline scheduler.
307
308 return exec::concat_completion_signatures(__sigs, __eptr_sigs, __bouncer_sigs);
309 }
310 }
311 }
312
313 static constexpr auto __connect =

Callers

nothing calls this directly

Calls 1

Tested by

no test coverage detected