gpt4 book ai didi

c++ - 异步返回 void 类型的 future 而不是预期类型

转载 作者:行者123 更新时间:2023-11-28 02:10:51 25 4
gpt4 key购买 nike

我正在学习 C++ 的 future 和异步编程。我有以下代码基于 Stroustrup 的 C++ 引用第 42 章中的代码。 GCC 和 Microsoft 编译器都提示没有从 future<void> 进行转换至 future<InputIterator>在调用 push_back .为什么对异步的调用返回 future<void>而不是 future<std::iterator>我希望从std::find

template<typename T, typename InputIter>
InputIter p_find(InputIter first, InputIter last, const T& value, const int grain)
{
std::vector<std::future<InputIter>> results;
while (first != last)
{
results.push_back(std::async([=]() mutable {std::find(first, first + grain, value); }));
first += grain;
}
//blah blah

最佳答案

您的 lambda 不返回任何内容(即 void ),因此 async() 的结果是std::future<void> .你想要的大概是

results.push_back(std::async([=]() mutable {return std::find(first, first + grain, value); }));
// ^^^^^^

关于c++ - 异步返回 void 类型的 future 而不是预期类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35761159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com