10template <
typename Waited,
typename = std::enable_if_t<is_waitable_v<Waited>>>
18 using namespace detail;
19 static constexpr auto kSharedCount =
kCount<SharedHandle,
typename Waited::Handle...>;
20 using Awaiter = std::conditional_t<kSharedCount == 0, MultiAwaitAwaiter<AwaitEvent<false>>,
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<false>>>,
37 typename = std::enable_if_t<is_waitable_v<typename std::iterator_traits<Iterator>::value_type>>>
#define YACLIB_ASSERT(cond)
YACLIB_INLINE auto AwaitInline(Waited &waited) noexcept
Contract< V, E > MakeContract()
Creates related future and promise.