@@ -571,18 +571,21 @@ namespace UnspecifiedRelations {
571571 // [expr.rel]p3: Pointers to void can be compared [...] if both pointers
572572 // represent the same address or are both the null pointer [...]; otherwise
573573 // the result is unspecified.
574- struct S { int a, b; } s;
574+ struct S { int a, b; static int c; } s;
575575 constexpr void *null = 0 ;
576- constexpr void *pv = (void *)&s.a;
577- constexpr void *qv = (void *)&s.b;
576+ constexpr void *av = (void *)&s.a;
577+ constexpr void *bv = (void *)&s.b;
578+ constexpr void *cv = (void *)&s.c;
578579 constexpr bool v1 = null < (int *)0 ;
579- constexpr bool v2 = null < pv; // expected-error {{constant expression}} expected-note {{comparison between 'nullptr' and '&s.a' has unspecified value}}
580- constexpr bool v3 = null == pv; // ok
581- constexpr bool v4 = qv == pv; // ok
582- constexpr bool v5 = qv >= pv; // expected-error {{constant expression}} expected-note {{unequal pointers to void}}
583- constexpr bool v6 = qv > null; // expected-error {{constant expression}} expected-note {{comparison between '&s.b' and 'nullptr' has unspecified value}}
584- constexpr bool v7 = qv <= (void *)&s.b; // ok
585- constexpr bool v8 = qv > (void *)&s.a; // expected-error {{constant expression}} expected-note {{unequal pointers to void}}
580+ constexpr bool v2 = null < av; // expected-error {{constant expression}} expected-note {{comparison between 'nullptr' and '&s.a' has unspecified value}}
581+ constexpr bool v3 = null == av; // ok
582+ constexpr bool v4 = bv == av; // ok
583+ constexpr bool v5 = bv >= av; // cxx11-error {{constant expression}} cxx11-note {{unequal pointers to void}}
584+ constexpr bool v6 = bv > null; // expected-error {{constant expression}} expected-note {{comparison between '&s.b' and 'nullptr' has unspecified value}}
585+ constexpr bool v7 = bv <= (void *)&s.b; // ok
586+ constexpr bool v8 = bv > (void *)&s.a; // cxx11-error {{constant expression}} cxx11-note {{unequal pointers to void}}
587+ constexpr bool v9 = cv > bv; // expected-error {{constant expression}} expected-note {{comparison between '&c' and '&s.b' has unspecified value}}
588+ constexpr bool v10 = cv <= (void *)&s; // expected-error {{constant expression}} expected-note {{comparison between '&c' and '&s' has unspecified value}}
586589}
587590
588591// - an assignment or a compound assignment (5.17); or
0 commit comments