It doesn't "do" anything different. They operate the same. The main use of them is in *overload selection*, in which you can do different behavior in your function based on whether you were passed a temporary or an object marked as moveable, vs being passed something like a variable name
i see, so its like an attribute you can give, so you can use for polymorfic compile time overloading , is that acurate?