Czy w następujących fragmentach jest std::move
?Czy konieczne jest tutaj `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));
}
O ile wiem call()
przyjmuje odniesienie rvalue .. ale ponieważ odniesienie rvalue jest sama lwartością, w celu wywołania swap(std::function<void(int)>&&)
muszę ponownie rzucić to do odniesienia rvalue z std::move
Czy moje rozumowanie jest poprawne lub std::move
może zostać pominięte w tym przypadku (a jeśli tak, to dlaczego?)
Wygląda na to, że chcesz wystawić operator = zamiast zamiany tutaj. A potem, tak, użyj ruchu. –