cpp / latest / thread / packaged_task / operator().html /

std::packaged_task<R(Args...)>::operator()

void operator()( ArgTypes... args );
(since C++11)

Calls the stored task with args as the arguments. The return value of the task or any exceptions thrown are stored in the shared state. The shared state is made ready and any threads waiting for this are unblocked.

Parameters

args - the parameters to pass on invocation of the stored task

Return value

(none).

Exceptions

std::future_error on the following error conditions:

  • The stored task has already been invoked. The error category is set to promise_already_satisfied.
  • *this has no shared state. The error category is set to no_state.

Example

Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
LWG 2142 C++11 A successful call to operator() synchronizes with a call to any
member function of a std::future or std::shared_future that
share their shared state with *this.
No additional synchronization guarantees
other than what's already provided by shared state.

See also

executes the function ensuring that the result is ready only once the current thread exits
(public member function)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/thread/packaged_task/operator()