Я в основном пытаюсь делать это сделать:Почему я не могу переместить измененную функцию, которая содержит перенесенное будущее?
using Type = SomeTypeThatIWantToMove;
std::promise<Type> promised_result;
std::future<Type> promised_future = promised_result.get_future();
using Callback = std::function<void()>;
Callback function_which_should_be_movable =
[this, future_result(std::move(promised_future))]() mutable
{
this->some_function(future_result.get()); // signature: void some_function(const Type&)
};
using ResultBuilder = std::function<Type(Callback&&)>;
// result_builder is of type ResultBuilder
Type thingy = result_builder(std::move(function_which_should_be_movable));
MinGW скажите, что Move-конструктор function_which_should_be_movable удаляется, так как копировально-конструктор станд :: будущее будет удален. Однако я не понимаю, почему компилятор попытается скопировать будущее, а не переместить его.
Несчастная реальность заключается в том, что 'std :: function' довольно сильно нарушена. –