Why is S::x not odr-used?
Consider this example from cppreference : struct S { static const int x = 1; }; void f() { &S::x; } // discarded-value expression does not odr-use S::x I agree that &S::x is a discarded-value expression , since the standard says (9.2, paragraph 1 [stmt.expr] from n4700 ) Expression statements have the form expression-statement: expression_opt ; The expression is a discarded-value expression (Clause 8)... However, is that enough for S::x to not be odr-used ? 6.2, paragraph 3 [basic.def.odr] states A variable x whose name appears as a potentially-evaluated expression ex is odr-used by ex unless