| 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 = |
nothing calls this directly
no test coverage detected