Changes for std::offset
If P1278 moves forward in LEWG, a lot of the awkward offsetof code can be replaced. For the moment std::offset is proposed to only work with standard layout types, and the wording has it not even participating in overload resolution unless the class is standard layout. This possibly leaves a tiny bit of room for keeping the old offsetof infrastructure since offsetof can still be conditionally supported by the implementation (possibly it be kept but not used in the examples). A related problem to an aggressive move to standard layout is that none of the _head types are standard layout, so their inclusion anywhere disables std::offset.
Edited by Kenneth Camann