// Test that we can refer to the address of a base member of a null pointer // to get its offset. The standard says that offsetof shall not be used on // non-POD classes, but there seems to be no such restriction on the common // implementation thereof. // Yes, this is bad, naughty, evil code. But it seems to be well-formed. // So we'll just warn. // { dg-do run } struct A { int i; }; struct B: public A { virtual void f (); }; struct C: public B { }; int main () { return ((unsigned long) &((C*)0)->i) != sizeof(void*); // { dg-warning "offsetof|invalid" "" } }