¿Por qué S :: x no se usa odr?

Considere este ejemplo decppreference:

struct S { static const int x = 1; };
void f() { &S::x; } // discarded-value expression does not odr-use S::x

Estoy de acuerdo que&S::x es unexpresión de valor descartado, ya que el estándar dice (9.2, párrafo 1 [stmt.expr] den4700)

Las declaraciones de expresión tienen la forma

expression-statement:
    expression_opt ;

La expresión es una expresión de valor descartado (Cláusula 8) ...

Sin embargo, ¿es eso suficiente paraS::x no serodr-used? 6.2, el párrafo 3 [basic.def.odr] establece

Una variablex cuyo nombre aparece como una expresión potencialmente evaluadaex esodr-used porex a no ser que

...Six es un objetoex es un elemento del conjunto de resultados potenciales de una expresióne, donde cualquierala conversión lvalue-to-rvalue (7.1) se aplica aeoe es una expresión de valor descartado (Cláusula 8).

El problema es que la expresión de valor descartado&S::x no tiene resultados potenciales (lo que significa queS::x no es un resultado potencial de&S::x), como puede ver en 6.2, párrafo 2 [basic.def.odr]:

... El conjunto de resultados potenciales de una expresióne se define de la siguiente manera:

Sie es una expresión de identificación (8.1.4), el conjunto contiene soloe.Sie es una operación de subíndice (8.2.1) con un operando de matriz, el conjunto contiene los resultados potenciales de ese operando....De lo contrario, el conjunto está vacío.

Entonces, ¿cómo puedes explicar eso?S::x no se usa odr?

Respuestas a la pregunta(3)

Su respuesta a la pregunta