◐ Shell
clean mode source ↗

[expr.context]

7 Expressions [expr]

7.2 Properties of expressions [expr.prop]

7.2.3 Context dependence [expr.context]

An unevaluated operand is not evaluated.

[Note 1: 

In an unevaluated operand, a non-static class member can be named ([expr.prim.id]) and naming of objects or functions does not, by itself, require that a definition be provided ([basic.def.odr]).

— end note]

In some contexts, an expression only appears for its side effects.

Such an expression is called a discarded-value expression.

[Note 2: 

Using an overloaded operator causes a function call; the above covers only operators with built-in meaning.

— end note]

The temporary materialization conversion ([conv.rval]) is applied if the (possibly converted) expression is a prvalue of object type.

[Note 3: 

If the original expression is an lvalue of class type, it must have a volatile copy constructor to initialize the temporary object that is the result object of the temporary materialization conversion.

— end note]

The expression is evaluated and its result (if any) is discarded.