The definition of the odr-used variable is given as follows:
A variable x whose name appears as a potentially-evaluated expression ex is odr-used unless x satisfies the requirements for appearing in a constant expression (5.19) and, if x is an object, ex is an element of the set of potential results of an expression e, where either the lvalue-to-rvalue conversion (4.1) is applied to e, or e is a discarded-value expression (Clause 5).
As far as I understood ex
can be any expression containing x
as a potentially evaluated operand, say, x++
or
int foo(int);
int x;
//...
x+=foo(x);
But I didn't understand what is just e
in that case.