A folder on lvalue, rvalue and move semantics