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-квалифицированный, опционально noexcept, опционально с lvalue reference квалификатором). Выведенный тип является 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)>
}