10template <
typename Waited,
typename = std::enable_if_t<is_waitable_v<Waited>>>
18 using namespace detail;
19 static constexpr auto kSharedCount = Count<SharedHandle,
typename Waited::Handle...>;
20 using Awaiter = std::conditional_t<kSharedCount == 0, MultiAwaitAwaiter<AwaitEvent<true>>,
27 typename = std::enable_if_t<is_waitable_v<Value>>>
29 using namespace detail;
30 static constexpr auto kShared = std::is_same_v<typename Value::Handle, SharedHandle>;
31 using Awaiter = std::conditional_t<kShared, MultiAwaitAwaiter<DynamicSharedEvent<AwaitEvent<true>>>,
37 typename = std::enable_if_t<is_waitable_v<typename std::iterator_traits<Iterator>::value_type>>>
#define YACLIB_ASSERT(cond)
Contract< V, E > MakeContract()
Creates related future and promise.
YACLIB_INLINE auto AwaitSticky(Waited &waited) noexcept