Is it possible to get a pointer to one subobject via a pointer to a different, unreleated subobject?

This is perfectly well-defined: void something(int *x) { reinterpret_cast<Point*>(x)->y = 42; } The Point object (p) and its x member are pointer-interconvertible, from [basic.compound]: Two objects a and b are pointer-interconvertible if: […] one is a standard-layout class object and the other is the first non-static data member of that object, or, if the object … Read more