# std::packaged_task<R(Args...)>::reset

< cpp‎ | thread‎ | packaged task

void reset(); |  | (C++11 起)

重置状态，抛弃先前执行的结果。构造共享状态。

等价于 *this = packaged_task(std::move(f)) ，其中 `f` 是存储的任务。

### 参数

（无）

### 返回值

（无）

### 异常

- 若 *this 无共享状态则为 std::future_error 。设置 error_condition 为 `no_state` 。
- 若无足够内存以分配新的共享状态则为 std::bad_alloc 。
- 新 `packaged_task` 的移动构造函数所抛的任何异常

### 示例

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

    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';
    }

输出：

    2^9 = 512
    2^10 = 1024