@ Michael J
Спасибо за ваш ответ.Это не совсем то, что я искал, но это вдохновляет меня на это:
template<class T, typename U>
std::ptrdiff_t member_offset(U T::* member)
{
return reinterpret_cast<std::ptrdiff_t>(
&(reinterpret_cast<T const volatile*>(NULL)->*member)
);
}