Can anyone explain this statement from ISO N3242 ยง3.2, 2nd point

An expression is potentially evaluated unless it is an unevaluated operand (Clause 5) or a subexpression thereof. A variable or non-overloaded function whose name appears as a potentially-evaluated expression is odr-used unless it is an object that satisfies the requirements for appearing in a constant expression (5.19) and the lvalue-to-rvalue conversion (4.1) is immediately applied. this is odr-used if it appears as a potentiallyevaluated expression (including as the result of the implicit transformation in the body of a non-static member function (9.3.1)).

ISO Standard 2003 : says

An expression is potentially evaluated unless it appears where an integral constant expression is required (see 5.19), is the operand of the sizeof operator (5.3.3), or is the operand of the typeid operator and the expression does not designate an lvalue of polymorphic class type (5.2.8). An object or non-overloaded function is used if its name appears in a potentially-evaluated expression.

What is the actual difference in these statements?

Can any one explain this with the help of an example/program?

Edit
Report