【发布时间】:2014-03-27 07:45:12
【问题描述】:
这里是c++新手。
我已经尝试初始化和设置 boost::unique_future 变量值:
boost::unique_future<bool> result;
result = boost::async([this](){return false;});
但是我在第二个代码字符串上出现了下一个错误:错误:没有运算符“=”匹配这些操作数,操作数类型是:boost::unique_future
here 用户 ikh 成功地做到了这一点:
boost::unique_future<int> fu2 = boost::async([]{ return 43; });
但我遇到了同样的错误:错误:没有运算符“=”匹配这些操作数,操作数类型是:boost::unique_future
我的错误在哪里?
【问题讨论】:
-
编译器无法从 lambda 表达式推导出模板参数,并且 boost::async 推导出未来
result_of<decay<F>::type>::type的返回类型的方式void。尝试使用boost::async<bool ()>([] { return false; }); -
boost::async<bool()>([] { return false; });以下是:错误:没有重载函数“boost::async”的实例与参数列表参数类型匹配:(lamda []bool()->bool)。result = boost::async<bool>([] { return false; });给了我“错误 10 错误 C2665: 'boost::async' : 2 个重载都不能转换所有参数类型”