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