std::packaged_task::reset(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’… std::packaged_task::reset πŸ’…

okay so bestie, this page is from the C++ Standard Libary manual β€” yes, that’s literally the spelling on the page πŸ’€ β€” and it’s all about std::packaged_task::reset.


✨ NAME ✨

std::packaged_task::reset β€” std::packaged_task::reset

it’s giving β€œsame name, same energy, one tiny function” πŸŽ€


🌸 Synopsis 🌸

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

so this baby has been around since C++11, periodt ✨

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) β€” literally no parameters, bestie 🫢


πŸ¦‹ Return value πŸ¦‹

(none) β€” nope, nothing comes back πŸ’–


πŸ’€ 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 packaged_task.
like, if any of these pop off, it’s a whole thing 😭 no cap.

πŸ“ 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

byeee 🫢 β€” source: http://cppreference.com, version/date: 2024.06.10, page: std::packaged_task::reset(3) πŸ’–

πŸ“¦ where this page comes from