home | help
std::packaged_task::reset(3)   C++ Standard Libary  std::packaged_task::reset(3)

NAME
     std::packaged_task::reset - std::packaged_task::reset

Synopsis
	void reset();  (since C++11)

	Resets	the  state  abandoning	the  results of previous executions. New
     shared state is
	constructed.

	Equivalent to *this = packaged_task(std::move(f)), where f is the stored
     task.

Parameters
	(none)

Return value
	(none)

Exceptions
	  * std::future_error if *this has no shared state. The error  condition
     is set to
	    no_state.
	  *  std::bad_alloc  if  there	was  not  enough memory for a new shared
     state.
	  * Any exception thrown by  the  move	constructor  of  the  new  pack-
     aged_task.

Example
     // Run this code

      #include <cmath>
      #include <future>
      #include <iostream>
      #include <thread>

      int main()
      {
	  std::packaged_task<int(int,int)> task([](int a, int b)
	  {
	      return std::pow(a, b);
	  });
	  std::future<int> result = task.get_future();
	  task(2, 9);
	  std::cout << "2^9 = " << result.get() << '\n';

	  task.reset();
	  result = task.get_future();
	  std::thread task_td(std::move(task), 2, 10);
	  task_td.join();
	  std::cout << "2^10 = " << result.get() << '\n';
      }

Output:
      2^9 = 512
      2^10 = 1024

http://cppreference.com 	   2024.06.10	    std::packaged_task::reset(3)

home | help