C++ 从std::future到非标量std::future的转换引发错误
方法validatestd::string&request,int&id返回bool 使用此语法时,编译将完成:C++ 从std::future到非标量std::future的转换引发错误,c++,c++11,c++14,C++,C++11,C++14,方法validatestd::string&request,int&id返回bool 使用此语法时,编译将完成: auto task_1 = std::async([&]{ validate(request, id); }); 但是,当我使用std::future时,编译失败: std::future<bool> task_1 = std::async([&]{ Internal::validate(request, id); }); 改变 到 你的lambda没
auto task_1 = std::async([&]{ validate(request, id); });
但是,当我使用std::future时,编译失败:
std::future<bool> task_1 = std::async([&]{ Internal::validate(request, id); });
改变
到
你的lambda没有回音;因此,它不能作为未来bool的来源
如果validate没有返回bool,它应该是未来的一个选项。更改
std::future<bool> task_1 = std::async([&]{ Internal::validate(request, id); });
到
你的lambda没有回音;因此,它不能作为未来bool的来源
如果validate没有返回bool,那么它应该是未来的一个选择。问题是,您需要实际从lambda返回一个值,函数才能具有返回类型。因为您没有这样做,所以std::async的返回类型是std::future
std::async[&]{return Internal::validaterequest,id;};将导致std::future问题是,您需要实际从lambda返回一个值,函数才能具有返回类型。因为您没有这样做,所以std::async的返回类型是std::future
std::async[&]{return Internal::validaterequest,id;};将导致std::future您的lambda没有返回任何内容,投票以打字错误结束您的lambda没有返回任何内容,投票以打字错误结束
std::future<bool> task_1 = std::async([&]{ Internal::validate(request, id); });
std::future<bool> task_1 = std::async([&]{ return Internal::validate(request, id); });