std::experimental::packaged_task<R(Args...)>:: packaged_task (library fundamentals TS)
From cppreference.net
<
cpp
|
experimental
|
lib extensions
|
packaged task
|
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
|
예외
4)
(없음)