On Monday, October 10, 2016 17:57:15 Satoshi via Digitalmars-d-learn wrote: > Hello, > How can I take an ptrdiff_t of any tupleoff entry from class > during compilation? > > > I need something like this: > > template Test(T, int i) { > enum Test = &T.tupleof[i] - &T.tupleof[0]; > } > > > and then use it like: > > class AnyClass { > int a; > int b; > int c; > string d; > > } > > enum Addr = Test!(AnyClass, 3); > > void assignInt!(T)(AnyClass cls, T value) { > *(cast(T *)cast(void *)cls + Addr) = value; > } > > > > This is just an example how I need to use it. > Is something like this possible to do?
You can use the offsetof property of a member variable to find out the offset between its address and the address of the beginning of the class or struct that it's a member of. - Jonathan M Davis