尝试编译以下代码片段:
#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 的需要有关,但我被卡住了。