Сабж. Есть скажем что то вроде
struct C1{
double x;
int p[4];
};
struct C2{
char a;
C1 c;
C1 cs[12];
};
нужно например узнать смещение С2::с.x относительно начала C2. Или смещение С2::cs[3].p[1]
Сейчас использую конструкции вроде
template <class C,class T> long addr( T C::* p, int i=0 ){
C s;
return (char*)&(s.*p)-(char*)&s+sizeof(T)*i;
}