10template <
typename V,
typename E>
16template <
typename Waited,
typename = std::enable_if_t<is_waitable_v<Waited>>>
24 using namespace detail;
25 static constexpr auto kSharedCount =
Count<SharedHandle,
typename Waited::Handle...>;
26 using Awaiter = std::conditional_t<kSharedCount == 0, MultiAwaitAwaiter<AwaitEvent>,
33 typename = std::enable_if_t<is_waitable_v<Value>>>
35 using namespace detail;
36 static constexpr auto kShared = std::is_same_v<typename Value::Handle, SharedHandle>;
43 typename = std::enable_if_t<is_waitable_v<typename std::iterator_traits<Iterator>::value_type>>>
50template <
typename V,
typename E>
56template <
typename V,
typename E>
62template <
typename V,
typename E>
Provides a mechanism to access the result of async operations.
Provides a mechanism to schedule the some async operations TODO(MBkkt) add description.
#define YACLIB_ASSERT(cond)
YACLIB_INLINE auto Await(Task< V, E > &task) noexcept
Contract< V, E > MakeContract()
Creates related future and promise.