From the Working Draft, Standard for Programming Language C++, [basic.lval/5]:
The result of a glvalue is the entity denoted by the expression. The result of a prvalue is the value that the expression stores into its context; a prvalue that has type cv
void
has no result. A prvalue whose result is the value V is sometimes said to have or name the value V. The result object of a prvalue is the object initialized by the prvalue; a non-discarded prvalue that is used to compute the value of an operand of a built-in operator or a prvalue that has type cvvoid
has no result object.[Note 4: Except when the prvalue is the operand of a decltype-specifier, a prvalue of class or array type always has a result object. For a discarded prvalue that has type other than cv
void
, a temporary object is materialized; see [expr.context]. — end note]
What is the difference between initializing an object and computing a value?
Some examples of each would be appreciated.