Namespaces
Variants

deduction guides for std::packaged_task

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
헤더 파일에 정의됨 <future>
template < class R, class ... Args >
packaged_task ( R ( * ) ( Args... ) ) - > packaged_task < R ( Args... ) > ;
(1) (C++17부터)
template < class F >
packaged_task ( F ) - > packaged_task < /*see below*/ > ;
(2) (C++17부터)
template < class F >
packaged_task ( F ) - > packaged_task < /*see below*/ > ;
(3) (C++23부터)
template < class F >
packaged_task ( F ) - > packaged_task < /*see below*/ > ;
(4) (C++23부터)
1) deduction guide 는 함수로부터의 추론을 허용하기 위해 std::packaged_task 에 제공됩니다.
2) 이 오버로드는 다음 조건에서만 오버로드 해결에 참여합니다: & F :: operator ( ) 가 평가되지 않은 피연산자로 취급될 때 올바른 형식을 가지며, decltype ( & F :: operator ( ) ) 가 다음 형식인 경우입니다 R ( G :: * ) ( A... ) (선택적으로 cv-qualified, 선택적으로 noexcept, 선택적으로 lvalue reference qualified). 추론된 타입은 std:: packaged_task < R ( A... ) > 입니다.
3) 이 오버로드는 다음 조건에서만 오버로드 해결에 참여합니다: & F :: operator ( ) 가 평가되지 않은 피연산자로 취급될 때 올바른 형식이며, F :: operator ( ) 명시적 객체 매개변수 함수 이고 그 형식이 R ( G, A... ) 또는 R ( G, A... ) noexcept 형태인 경우입니다. 추론된 형식은 std:: packaged_task < R ( A... ) > 입니다.
4) 이 오버로드는 다음 조건에서만 오버로드 해결에 참여합니다: & F :: operator ( ) 가 평가되지 않은 피연산자로 취급될 때 올바른 형식을 가지며, F :: operator ( ) 정적 멤버 함수 이고 그 형식이 R ( A... ) 또는 R ( A... ) noexcept 형태인 경우입니다. 추론된 형식은 std:: packaged_task < R ( A... ) > 입니다.

참고 사항

이러한 추론 가이드는 생략 부호 매개변수 를 가진 함수로부터의 추론을 허용하지 않으며, 타입 내의 ... 는 항상 팩 확장 으로 처리됩니다.

예제

#include <future>
int func(double) { return 0; }
int main()
{
    std::packaged_task f{func}; // packaged_task<int(double)>로 추론됨
    int i = 5;
    std::packaged_task g = [&](double) { return i; }; // => packaged_task<int(double)>
}