In C++11, an expression can be any one of the following:
An lvalue expression (so-called, historically, because lvalues could appear on the left-hand side of an assignment expression) designates a function or an object1. Example: If E is an expression of pointer type, then *E is an lvalue expression referring to the object or function to which E points. As another example, the result of calling a function whose return type is an lvalue reference is an lvalue.
An xvalue expression (an "eXpiring" value) also refers to an object, usually near the end of its lifetime (so that its resources may be moved, for example). An xvalue is the result of certain kinds of expressions involving rvalue references. Example: The result of calling a function whose return type is an rvalue reference is an xvalue.
A glvalue expression ("generalized" lvalue) is an lvalue or an xvalue.
An rvalue expression (so-called, historically, because rvalues could appear on the right-hand side of an assignment expression) is an xvalue, a temporary object or subobject thereof, or a value that is not associated with an object.
A prvalue expression ("pure" rvalue) is an rvalue that is not an xvalue. Example: The result of calling a function whose return type is not a reference is a prvalue.
See this page for a more exhaustive list of examples of each type of expression.
1 The term "object" as used here refers to an item that occupies some identifiable location in memory (i.e. has an address).