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

Method __impl

include/stdexec/__detail/__spawn_future.hpp:610–646  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

608 private:
609 template <sender _Sender, scope_token _Token, class _Env>
610 auto __impl(_Sender&& __sndr, _Token&& __tkn, _Env&& __env) const
611 {
612 using __alloc_t = decltype(__spawn_common::__choose_alloc(__env, STDEXEC::get_env(__sndr)));
613 using __senv_t = decltype(__spawn_common::__choose_senv(__env, STDEXEC::get_env(__sndr)));
614
615 using __spawn_future_state_t =
616 __spawn_future_state<__alloc_t, std::remove_cvref_t<_Token>, _Sender, __senv_t>;
617
618 using __traits =
619 std::allocator_traits<__alloc_t>::template rebind_traits<__spawn_future_state_t>;
620 typename __traits::allocator_type __alloc(
621 __spawn_common::__choose_alloc(__env, STDEXEC::get_env(__sndr)));
622
623 auto* __op = __traits::allocate(__alloc, 1);
624
625 __scope_guard __guard{[&]() noexcept { __traits::deallocate(__alloc, __op, 1); }};
626
627 __traits::construct(__alloc,
628 __op,
629 __alloc,
630 static_cast<_Sender&&>(__sndr),
631 static_cast<_Token&&>(__tkn),
632 __spawn_common::__choose_senv(__env, STDEXEC::get_env(__sndr)));
633
634 __guard.__dismiss();
635
636 struct __abandoner
637 {
638 void operator()(__spawn_future_state_t* __p) const noexcept
639 {
640 __p->__abandon();
641 }
642 };
643
644 return __make_sexpr<spawn_future_t>(
645 std::unique_ptr<__spawn_future_state_t, __abandoner>(__op));
646 }
647 };
648
649 template <class _Sender>

Callers

nothing calls this directly

Calls 2

get_envFunction · 0.70
__dismissMethod · 0.45

Tested by

no test coverage detected