Move doesn't really transfer ownership though... move just makes an rvalue reference out of some expression, whether it is actually an rvalue or an lvalue. You would use std::move in combination with an rvalue reference operator= that swaps and the swap actually does the exchange.
Yeah, well, if you're returning an actual node, think really hard about that because you might be jeopardizing the integrity of the list. If you're interested in returning the pointee, make sure that the client code cannot also delete the pointee or your class has a design problem. Other than that, you are safe.I'm just returning it to provide an interface tor linked structures' referenced node(s).