Требуется ли std::move в следующем фрагменте?
std::function<void(int)> my_std_function;
void call(std::function<void(int)>&& other_function)
{
my_std_function.swap(std::move(other_function));
}
Насколько я знаю, call() принимает ссылку на rvalue.. но так как ссылка rvalue сама является lvalue, для вызова swap(std::function<void(int)>&&) мне нужно переставить это значение в ссылку rvalue с помощью std::move
Могут ли мои рассуждения правильные или std::move в этом случае могут быть опущены (и если это возможно, почему?)