Spec-Zone.ru › C++

направляющие вывода для 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, спецификатором noexcept и квалификатором ссылки на lvalue). Выведенный тип — 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/cpp/thread/packaged_task/deduction_guides

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API