public member function
<future>
move (1) | packaged_task& operator= (packaged_task&& rhs) noexcept;
|
---|
copy [deleted] (2) | packaged_task& operator= (const packaged_task&) = delete; |
---|
Move-assign packaged_task
Acquires the shared state and stored task of rhs.
The shared state associated to the object before the call (if any) is abandoned (as if the packaged_task was destroyed).
rhs is left with no shared state: any operations that access its shared state will throw future_error with a no_state error condition.
packaged_task objects cannot be copied (2).
Parameters
- rhs
- Another packaged_task object of the same type (with the same template parameters, Ret and Args...).
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
// packaged_task construction / assignment
#include <iostream> // std::cout
#include <utility> // std::move
#include <future> // std::packaged_task, std::future
#include <thread> // std::thread
int main ()
{
std::packaged_task<int(int)> foo; // default-constructed
std::packaged_task<int(int)> bar ([](int x){return x*2;}); // initialized
foo = std::move(bar); // move-assignment
std::future<int> ret = foo.get_future(); // get future
std::thread(std::move(foo),10).detach(); // spawn thread and call task
// ...
int value = ret.get(); // wait for the task to finish and get result
std::cout << "The double of 10 is " << value << ".\n";
return 0;
}
| |
Output:
Data races
Both the object and rhs are modified.
Exception safety
No-throw guarantee: never throws exceptions.