【发布时间】:2019-01-24 02:39:38
【问题描述】:
尝试编译以下 sn-p 代码:
#include <iostream>
#include <future>
#include <functional>
void print_num(std::promise<bool>&& result, int i )
{
std::cout << i << " " << '\n' ;
result.set_value(true);
}
int main()
{
std::promise<bool> Promise0;
std::future<bool> Result0 = Promise0.get_future();
std::function<void()> f_display_31337 = std::bind(print_num, std::move(Promise0), 31337);
}
得到以下错误:
在函数 'int main()' 中:15:90:错误:从 'std::_Bind_helper&&, int)、std::promise, int>::type {aka std::_Bind, int)))( std::promise&&, int)>}' 到非标量类型 'std::function' 请求
我知道这与函数参数 std::promise&& 以及对 std::move 的需求有关,但我被卡住了。
【问题讨论】:
标签: c++11 std-function stdbind stdmove