is there any difference between static cast to rvalue reference and std::move
Yes there is a very important difference: std::move documents what you want to do. In addition the cast is prone to writing errors like a forgotten & or wrong type X. As it can be seen, std::move is even less to type.