C++ async只返回void?

C++ async只返回void?,c++,boost,C++,Boost,这里是c++新手 我已尝试初始化并设置boost::unique_future变量值: boost::unique_future<bool> result; result = boost::async([this](){return false;}); boost::独一无二的未来结果; 结果=boost::async([this](){return false;}); 但是我在第二个代码字符串上遇到了下一个错误:错误:没有运算符“=”匹配这些操作数,操作数类型是:boost::

这里是c++新手

我已尝试初始化并设置boost::unique_future变量值:

boost::unique_future<bool> result;
result = boost::async([this](){return false;});
boost::独一无二的未来结果;
结果=boost::async([this](){return false;});
但是我在第二个代码字符串上遇到了下一个错误:错误:没有运算符“=”匹配这些操作数,操作数类型是:boost::unique\u future=boost::unique\u future

用户ikh成功地做到了这一点:

boost::unique\u future fu2=boost::async([{return 43;})

但是我得到了同样的错误:错误:没有运算符“=”匹配这些操作数,操作数类型是:boost::unique\u future=boost::unique\u future


我的错误在哪里?

我想你还没有定义
BOOST\u RESULT\u OF\u USE\u DECLTYPE

#define BOOST_RESULT_OF_USE_DECLTYPE
#include <boost/thread.hpp>
#定义BOOST_RESULT_OF_USE_DECLTYPE
#包括

编译器无法从lambda表达式和boost::async推断未来
result\u of::type
的返回类型的方式推断模板参数,它会得到
void
。尝试使用
boost::async([]{return false;})
boost::async([]{return false;})如下:错误:重载函数“boost::async”的实例与参数列表不匹配参数类型为:(lamda[]bool()->bool)<代码>结果=boost::async([]{return false;})给了我“错误10错误C2665:'boost::async':两个重载都不能转换所有参数类型”,这真的很有帮助,谢谢你,ikh;)我在哪里可以找到关于#define BOOST_RESULT_OF_USE_DECLTYPE等等的更多信息?@user2890591好吧,我也有同样的问题,我发现
unique_future
使用
RESULT_OF
在内部查看functor的返回类型,以及
RESULT_OF
使用“adaptive functor”,在C++11中被弃用。它不能与lamda一起使用。如果定义USE DECLTYPE的
BOOST\u RESULT\u
RESULT\u将使用C++11的一个新特性
DECLTYPE()
,来查看函子的返回类型。