The macro
offsetof(type, member-designator)
has the same semantics as the corresponding macro in
the C standard library header <stddef.h>, but
accepts a restricted set of type
arguments in this document.
Use of the offsetof macro with a type
other than a standard-layout class ([class.prop])
is conditionally-supported.183
The expression offsetof(type, member-designator)
is never type-dependent and it is
value-dependent if and only if type is
dependent.
The result of applying the offsetof macro to
a static data member or a function member is undefined.
No operation invoked by the offsetof macro shall throw an exception and
noexcept(offsetof(type, member-designator)) shall be true.
The type ptrdiff_t is an
implementation-defined
signed integer type that can
hold the difference of two subscripts in an array object, as described in [expr.add].
It is recommended that implementations choose types for ptrdiff_t and size_t
whose integer conversion ranks are no greater than that of
signedlongint unless a larger size is necessary to contain all the possible values.
The type
max_align_t is a trivial standard-layout type whose alignment requirement
is at least as great as that of every scalar type, and whose alignment
requirement is supported in every context ([basic.align]).