C++11 是否有打包的_任务::set_异常等价物?

C++11 是否有打包的_任务::set_异常等价物?,c++11,exception-handling,future,promise,packaged-task,C++11,Exception Handling,Future,Promise,Packaged Task,我的假设是,packaged_task下面有一个promise。如果我的任务引发异常,我如何将其路由到相关的未来?只要一个promise我就可以调用set\u异常 –如何对打包的_任务执行相同的操作?一个std::packaged_任务有一个关联的std::future对象,该对象将保存异常(或任务的结果)。您可以通过调用std::packaged_task的成员函数来检索未来 这意味着只要在与打包任务关联的函数中抛出一个异常就足够了,这样该异常就可以被任务的未来捕获(并在对未来对象调用get(

我的假设是,
packaged_task
下面有一个
promise
。如果我的任务引发异常,我如何将其路由到相关的
未来
?只要一个
promise
我就可以调用
set\u异常

–如何对
打包的_任务
执行相同的操作?

一个
std::packaged_任务
有一个关联的
std::future
对象,该对象将保存异常(或任务的结果)。您可以通过调用
std::packaged_task
的成员函数来检索未来

这意味着只要在与打包任务关联的函数中抛出一个异常就足够了,这样该异常就可以被任务的未来捕获(并在对未来对象调用
get()
时重新抛出)

例如:

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

int main()
{
    std::packaged_task<void()> pt([] () { 
        std::cout << "Hello, "; 
        throw 42; // <== Just throw an exception...
    });

    // Retrieve the associated future...
    auto f = pt.get_future();

    // Start the task (here, in a separate thread)
    std::thread t(std::move(pt));

    try
    {
        // This will throw the exception originally thrown inside the
        // packaged task's function...
        f.get();
    }
    catch (int e)
    {
        // ...and here we have that exception
        std::cout << e;
    }

    t.join();
}
#包括
#包括
#包括
int main()
{
std::打包的_任务pt([])(){
标准::cout