Попытка скомпилировать следующий фрагмент кода:
#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 :: обещание, int> :: type {aka std :: _ Bind, int)) ( std :: обещание &&, int)>} 'к нескалярному типу' std :: function 'запрашивается
Я знаю, что это как-то связано с аргументом функции std :: обещание && и необходимостью std :: move, но я застрял.