Руководства по выводу для std::packaged_task
Определено в заголовке <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) Это руководство по выводу предоставлено для
std::packaged_task для возможности вывода из функций.
2) Этот перегруз участвует в разрешении перегрузки только если
&F::operator() корректно сформировано при обработке как неоцениваемый операнд и decltype(&F::operator()) имеет вид R(G::*)(A...) (при необходимости с квалификаторами cv, optionally noexcept, optionally 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}; // deduces packaged_task<int(double)>
int i = 5;
std::packaged_task g = [&](double) { return i; }; // => packaged_task<int(double)>
}
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/thread/packaged_task/deduction_guides