boost::capy::when_any

when_any overloads

Synopses

Declared in <boost/capy/when_any.hpp>

Race io_result‐returning awaitables, selecting the first success.

template<IoAwaitable... As>
requires (sizeof...(As) > 0)
          && detail::all_io_result_awaitables<As...>
[[nodiscard]]
task<std::variant<std::error_code, /* implementation-defined */...>>
when_any(As... as);

Race a range of io_result‐returning awaitables (non‐void payloads).

template<IoAwaitableRange R>
requires detail::is_io_result_v<
        awaitable_result_t<std::ranges::range_value_t<R>>>
    && (!std::is_same_v<
            detail::io_result_payload_t<
                awaitable_result_t<std::ranges::range_value_t<R>>>,
            std::tuple<>>)
[[nodiscard]]
task<std::variant<std::error_code, std::pair<std::size_t, /* implementation-defined */>>>
when_any(R&& awaitables);

Race a range of void io_result‐returning awaitables.

template<IoAwaitableRange R>
requires detail::is_io_result_v<
        awaitable_result_t<std::ranges::range_value_t<R>>>
    && std::is_same_v<
            detail::io_result_payload_t<
                awaitable_result_t<std::ranges::range_value_t<R>>>,
            std::tuple<>>
[[nodiscard]]
task<std::variant<std::error_code, std::size_t>>
when_any(R&& awaitables);

Exceptions

Name

Thrown on

std::invalid_argument

if range is empty.

Rethrows

last exception when no winner and the last failure was an exception.

Return Value

  • A task yielding variant<error_code, R1, ..., Rn> where index 0 is the failure/no‐winner case and index i+1 identifies the winning child.

  • A task yielding variant<error_code, pair<size_t, PayloadT>> where index 0 is failure and index 1 carries the winner's index and payload.

  • A task yielding variant<error_code, size_t> where index 0 is failure and index 1 carries the winner's index.

Parameters

Name Description

awaitables

Range of io_result‐returning awaitables (must not be empty).

See Also

IoAwaitableRange, when_any

Created with MrDocs