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