deductionguidesforstd::packaged_task(3) | C++ Standard Libary | deductionguidesforstd::packaged_task(3) |
NAME¶
deductionguidesforstd::packaged_task - deductionguidesforstd::packaged_task
Synopsis¶
Defined in header <future>
template< class R, class... Args > (1) (since C++17)
packaged_task( R(*)(Args...) ) -> packaged_task<R(Args...)>;
template< class F > (2) (since C++17)
packaged_task( F ) -> packaged_task</*see below*/>;
template< class F > (3) (since C++23)
packaged_task( F ) -> packaged_task</*see below*/>;
template< class F > (4) (since C++23)
packaged_task( F ) -> packaged_task</*see below*/>;
1) This deduction guide is provided for std::packaged_task to allow deduction
from
functions.
2) This overload participates in overload resolution only if
&F::operator() is
well-formed when treated as an unevaluated operand and
decltype(&F::operator()) is
of the form R(G::*)(A...) (optionally cv-qualified, optionally noexcept,
optionally
lvalue reference qualified). The deduced type is
std::packaged_task<R(A...)>.
3) This overload participates in overload resolution only if
&F::operator() is
well-formed when treated as an unevaluated operand and F::operator() is an
explicit
object parameter function whose type is of form R(G, A...) or R(G, A...)
noexcept.
The deduced type is std::packaged_task<R(A...)>.
4) This overload participates in overload resolution only if
&F::operator() is
well-formed when treated as an unevaluated operand and F::operator() is a
static
member function whose type is of form R(A...) or R(A...) noexcept. The
deduced type
is std::packaged_task<R(A...)>.
Notes¶
These deduction guides do not allow deduction from a function
with ellipsis
parameter, and the ... in the types is always treated as a pack
expansion.
Example¶
// Run this code
#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)>
}
2024.06.10 | http://cppreference.com |