Namespaces
Variants

std::experimental::packaged_task<R(Args...)>:: packaged_task (library fundamentals TS)

From cppreference.net
packaged_task ( ) noexcept ;
(1) (라이브러리 fundamentals TS)
template < class F >
explicit packaged_task ( F && f ) ;
(2) (라이브러리 fundamentals TS)
template < class F, class Allocator >
explicit packaged_task ( std:: allocator_arg_t , const Allocator & alloc, F && f ) ;
(3) (라이브러리 fundamentals TS)
packaged_task ( const packaged_task & ) = delete ;
(4) (라이브러리 fundamentals TS)
packaged_task ( packaged_task && rhs ) noexcept ;
(5) (라이브러리 fundamentals TS)

새로운 std::experimental::packaged_task 객체를 생성합니다.

1) 작업과 공유 상태 없이 std::experimental::packaged_task 객체를 생성합니다.
2) 공유 상태와 작업의 복사본을 가진 std::experimental::packaged_task 객체를 생성하며, std:: forward < F > ( f ) 로 초기화됩니다. 이 생성자는 std:: decay < F > :: type std:: packaged_task < R ( ArgTypes... ) > 와 동일한 타입일 경우 오버로드 해결에 참여하지 않습니다.
3) 공유 상태와 작업의 복사본을 가진 std::experimental::packaged_task 객체를 생성합니다. 작업은 std:: forward < F > ( f ) 로 초기화됩니다. 제공된 할당자를 사용하여 작업을 저장하는 데 필요한 메모리를 할당하며, 이는 type-erased 할당자로 처리됩니다(아래 참조). std:: decay < F > :: type 의 타입이 std:: packaged_task < R ( ArgTypes... ) > 와 동일한 타입일 경우, 이 생성자는 오버로드 해결에 참여하지 않습니다.
4) 복사 생성자가 삭제되었으며, std::experimental::packaged_task 는 이동 전용(move-only)입니다.
5) rhs 가 이전에 소유했던 공유 상태와 태스크를 가진 std::experimental::packaged_task 를 생성하며, rhs 는 공유 상태가 없고 이동된 태스크를 가지게 됩니다.

타입 소거 할당자

packaged_task 의 생성자에서 할당자 인수 alloc 를 받는 경우 해당 인수를 타입 삭제된 할당자로 취급합니다. packaged_task 가 메모리 할당에 사용하는 메모리 리소스 포인터는 (지정된 경우) 할당자 인수를 사용하여 다음과 같이 결정됩니다:

alloc 의 타입 메모리 리소스 포인터의 값
존재하지 않음 (생성 시 allocator 지정되지 않음) 생성 시점의 std:: experimental :: pmr :: get_default_resource ( )
std::nullptr_t 생성 시점의 std:: experimental :: pmr :: get_default_resource ( )

std:: experimental :: pmr :: memory_resource * 로 변환 가능한 포인터 타입
static_cast < std:: experimental :: pmr :: memory_resource * > ( alloc )

std::experimental::pmr::polymorphic_allocator 의 특수화
alloc. resource ( )
Allocator 요구사항을 충족하는 다른 모든 타입 std:: experimental :: pmr :: resource_adaptor < A > ( alloc ) 타입의 값을 가리키는 포인터 (여기서 A alloc 의 타입). 이 포인터는 packaged_task 객체의 수명 동안에만 유효함
위의 어떤 경우에도 해당하지 않음 프로그램의 형식이 올바르지 않음

매개변수

f - 실행할 호출 가능 대상(함수, 멤버 함수, 람다 표현식, 함수 객체)
alloc - 태스크 저장 시 사용할 할당자
rhs - 이동할 std::experimental::packaged_task

예외

2,3) f 의 복사/이동 생성자에 의해 발생하는 모든 예외 및 할당이 실패할 경우 std::bad_alloc 가 발생할 수 있습니다.
4) (없음)