5#include <yaclib/config.hpp>
18 using OutputValue =
typename MaybeVariant<
typename Unique<std::tuple<
typename Futures::Core::Value...>>::Type>::Type;
21 return when::When<when::Any, F, OutputValue, OutputTrait>(std::move(
futures)...);
24template <FailPolicy F = FailPolicy::LastFail,
typename It,
typename = std::enable_if_t<is_input_iterator_v<It>>>
26 using T =
typename std::iterator_traits<It>::value_type;
36 return when::When<when::Any, F, typename T::Core::Value, typename T::Core::Trait>(
begin, count);
40 typename = std::enable_if_t<is_input_range_pair_v<It, Sentinel>>>
44 "Use WhenAny(begin, std::distance(begin, end)) instead");
50template <FailPolicy F = FailPolicy::LastFail,
typename Range,
typename = std::enable_if_t<is_input_range_v<Range>>>
Provides a mechanism to access the result of async operations.
YACLIB_INLINE void CheckSameTrait()
Contract< V, T > MakeContract()
Creates related future and promise.
typename detail::Head< Args... >::Type head_t
typename detail::AsyncTypes< T >::Value async_value_t
FailPolicy
This Policy describe how algorithm interpret if Future will be fulfilled by fail (exception or error)
typename detail::AsyncTypes< T >::Trait async_trait_t
YACLIB_INLINE auto WhenAny(Futures... futures)