17template <FailPolicy F = FailPolicy::None,
typename It,
typename = std::enable_if_t<is_input_iterator_v<It>>>
19 using T =
typename std::iterator_traits<It>::value_type;
20 return when::When<when::Join, F, void, typename T::Core::Trait>(
begin, count);
24 typename = std::enable_if_t<is_input_range_pair_v<It, Sentinel>>>
28 "Use Join(begin, std::distance(begin, end)) instead");
34template <FailPolicy F = FailPolicy::None,
typename Range,
typename = std::enable_if_t<is_input_range_v<Range>>>
YACLIB_INLINE void CheckSameTrait()
auto When(Futures... futures)
Contract< V, T > MakeContract()
Creates related future and promise.
typename detail::Head< Args... >::Type head_t
YACLIB_INLINE auto Join(Futures... futures)
FailPolicy
This Policy describe how algorithm interpret if Future will be fulfilled by fail (exception or error)