1// { dg-do run } 2template <class STRUCT, class MEMBER> inline STRUCT * 3setback(MEMBER *bp, MEMBER STRUCT::*offset) 4{ 5 if(!bp) return 0; 6 union { int i; MEMBER STRUCT::*of; } u; 7 u.of = offset; 8 return (STRUCT *) ((__SIZE_TYPE__) bp - u.i); 9} 10 11 12struct S 13{ 14 int i; 15}; 16 17int main() 18{ 19 S s; 20 21 S* sp = setback (&s.i, &S::i); 22} 23