如何从结果创建并发:: task?

Ton*_*ina 3 c++ task c++11 ppl

我想创建一个已从给定结果中完成的新任务.我目前的解决方法是:

return concurrency::task<T>([]{return result;});
Run Code Online (Sandbox Code Playgroud)

有更好的吗?

问题出在以下代码中:

concurrency::task<bool> foo()
{
    if (smth)
        // the result is 
        return (foo_other() && foo_other2()).then([](std::vector<bool> results) {...});

    //return false;
    return concurrency::task<bool>([]{return false;});
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我的函数是异步的,它依赖于另一个异步函数.但有时我可以退出应用程序,例如,如果异步任务已经完成.在这种情况下,我需要返回一个返回指定结果的可持续任务.

Paw*_*wel 6

您可以按如下方式创建已完成的任务:

concurrency::task_from_result<bool>(false);
Run Code Online (Sandbox Code Playgroud)