I would like to get the offset of a standard layout member variable when provided with a poiner to that variable. I cannot use offsetof since I have a pointer and n
I'm afraid that no standard-compliant solution which satisfies OP requirements exists.
I can give a couple of non-compliant ones.
template
size_t get_offset( int (T::*mem) )
{
return reinterpret_cast(&(((T*)nullptr)->*mem))-reinterpret_cast(nullptr);
}
It's funny, but the following works in VC2010, making use of offsetof being a macro.
template
size_t get_offset( int (T::*mem) )
{
return offsetof(T, *mem);
}