Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::experi...al::when_any(3) C++ Standard Libarystd::experi...al::when_any(3)

NAME
       std::experimental::when_any - std::experimental::when_any

Synopsis
	  Defined in header <experimental/future>
	  template < class Sequence >

	  struct		       when_any_result			     {
       (concurrency
	  std::size_t							index;
       TS)
	  Sequence futures;

	  };
	  template < class InputIt >

	  auto	      when_any(InputIt	      first,	   InputIt	 last)
       (1) (concurrency
										  TS)
	  -> future<when_any_result<std::vector<typename
	  std::iterator_traits<InputIt>::value_type>>>;
	  template < class... Futures >
										  (con-
       currency
	  auto		       when_any(Futures&&...		      futures)
       (2) TS)

	  -> future<when_any_result<std::tuple<std::decay_t<Futures>...>>>;

	  Create  a  future object that	becomes	ready when at least one	of the
       input futures and
	  shared_futures become	ready. The behavior is undefined if any	 input
       future or
	  shared_future	is invalid.

	  In particular, let Sequence be a std::vector<typename
	  std::iterator_traits<InputIt>::value_type> for (1) and
	  std::tuple<std::decay_t<Futures>...> for (2).	This function template
       creates a
	  shared  state	containing when_any_result<Sequence> and returns a fu-
       ture referring to
	  the shared state. Every input	future is moved	into the corresponding
       object in the
	  futures member of the	when_any_result<Sequence> in the shared	state,
       and every input
	  shared_future	is copied to the corresponding object in  the  futures
       member of the
	  when_any_result<Sequence>  in	the shared state. The order of the ob-
       jects in	the
	  Sequence matches the order of	arguments.

	  1) This function does	not participate	in overload resolution	unless
       InputIt's value
	  type (i.e., typename std::iterator_traits<InputIt>::value_type) is a
	  std::experimental::future or std::experimental::shared_future.
	  2)  This function does not participate in overload resolution	unless
       every argument
	  is either a (possibly	cv-qualified) std::experimental::shared_future
       or a
	  cv-unqualified std::experimental::future. (Formally, for every  type
       Fn in Futures,
	  either std::remove_reference_t<Fn> is	std::experimental::future<Rn>,
       or
	  std::decay_t<Fn> is std::experimental::shared_future<Rn>.)

	  After	 this call, every input	future is no longer valid; every input
       shared_future
	  remains valid.

Return value
	  A future referring to	the shared state created by the	call. The  fu-
       ture is always
	  valid(), and it becomes ready	when at	least one of the input futures
       and
	  shared_futures   the	call  are  ready.  The	index  member  of  the
       when_any_result contains
	  the position of the ready future or  shared_future  in  the  futures
       member.

	  1)  If the range is empty (i.e., first == last), the returned	future
       is ready
	  immediately; the futures field of the	when_any_result	 is  an	 empty
       vector, and the
	  index	field is size_t(-1).
	  2)  If no argument is	provided, the returned future is ready immedi-
       ately; the futures
	  field	of the when_any_result is an empty tuple, and the index	 field
       is size_t(-1).

http://cppreference.com		  2022.07.31	 std::experi...al::when_any(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::experimental::when_any&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help