prvalue
Prvalue, short for pure rvalue, is a category of expressions in C++ that denotes a value but does not designate a persistent object. Introduced with the language’s value categories, prvalues contrast with lvalues, which designate objects with identity, and with xvalues, which denote an expiring value that can be moved from.
Prvalues are not glvalues (generalized lvalues). An expression such as 5 or a temporary constructed object is
Use and materialization: A prvalue can initialize an object or be used to initialize a temporary object.
C++17 changes: The language introduced guaranteed copy elision for many prvalue-to-object initializations, allowing compilers to construct
Relation and further reading: Prvalues are part of the broader concept of value categories, which also include