Namespaces
Variants

std::experimental:: when_any

From cppreference.net
헤더 파일에 정의됨 <experimental/future>
template < class Sequence >

struct when_any_result {
std:: size_t index ;
Sequence futures ;

} ;
(concurrency TS)
template < class InputIt >

auto when_any ( InputIt first, InputIt last )

- > future < when_any_result < std:: vector < typename std:: iterator_traits < InputIt > :: value_type >>> ;
(1) (concurrency TS)
template < class ... Futures >

auto when_any ( Futures && ... futures )

- > future < when_any_result < std:: tuple < std:: decay_t < Futures > ... >>> ;
(2) (concurrency TS)

입력된 future shared_future 중 적어도 하나가 준비 상태가 될 때 준비되는 future 객체를 생성합니다. 입력된 future shared_future 가 유효하지 않을 경우 동작은 정의되지 않습니다.

특히, Sequence std:: vector < typename std:: iterator_traits < InputIt > :: value_type > 이 되도록 하고 (1) , std:: tuple < std:: decay_t < Futures > ... > 가 되도록 하라 (2) . 이 함수 템플릿은 when_any_result<Sequence> 를 포함하는 공유 상태를 생성하고 해당 공유 상태를 참조하는 future를 반환합니다. 모든 입력 future 는 공유 상태 내 when_any_result<Sequence> futures 멤버에 있는 해당 객체로 이동되고, 모든 입력 shared_future 는 공유 상태 내 when_any_result<Sequence> futures 멤버에 있는 해당 객체로 복사됩니다. Sequence 내 객체들의 순서는 인수의 순서와 일치합니다.

1) 이 함수는 다음 조건이 충족되지 않는 한 오버로드 해결에 참여하지 않습니다: InputIt 의 값 타입(즉, typename std:: iterator_traits < InputIt > :: value_type )이 std::experimental::future 또는 std::experimental::shared_future 인 경우에만.
2) 모든 인수가 (cv 한정자가 있을 수 있는) std::experimental::shared_future 이거나 cv 한정자가 없는 std::experimental::future 가 아닌 한, 이 함수는 오버로드 해결에 참여하지 않습니다. (공식적으로, Futures 의 모든 Fn 타입에 대해, std:: remove_reference_t < Fn > std:: experimental :: future < Rn > 이거나, std:: decay_t < Fn > std:: experimental :: shared_future < Rn > 인 경우입니다.)

이 호출 이후에는 모든 입력 future 가 더 이상 유효하지 않으며; 모든 입력 shared_future 는 계속 유효합니다.

반환값

호출에 의해 생성된 공유 상태를 참조하는 future . 이 future는 항상 valid ( ) 하며, 호출의 입력 future shared_future 중 적어도 하나가 준비 상태가 되면 준비 상태가 됩니다. when_any_result index 멤버는 futures 멤버 내에서 준비된 future 또는 shared_future 의 위치를 포함합니다.

1) 범위가 비어 있는 경우(즉, first == last ), 반환된 future 는 즉시 준비 상태가 됩니다; when_any_result futures 필드는 빈 벡터이며, index 필드는 size_t ( - 1 ) 입니다.
2) 인수가 제공되지 않으면 반환된 future 는 즉시 준비 상태가 됩니다; when_any_result futures 필드는 빈 튜플이며, index 필드는 size_t ( - 1 ) 입니다.