I recently started learning about rvalues,lvalues, move semantics and I can't understands some conceps like rvalue refs .. why can I assign a value to a rvalue ref like : int&& x = 10;.. doesn't that mean that an rvalue ref is an lvalue(I tought that a rvalue ref is a rvalue)? If that is true ... what's the point of having rvalue references? If that is false then what is the difference between an rvalue ref and an lvalue ?