Traditionally, a literal is an expression denoting a constant whose type and value are evident from its spelling. For example,
42 is a literal, while
x is not since one must see its declaration to know its type and read previous lines of code to know its value.
However, C++11 also added user-defined literals, which are not literals in the traditional sense but can be used as a shorthand for function calls.