lvalue: locatable value(addressable value)
xvalue: expiring value
glvalue: generalizable lvalue, it will be lvalue or xvalue
rvalue: not addressable value(no name exists)
prvalue: pure rvalue