Требуется ли 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
в этом случае могут быть опущены (и если это возможно, почему?)