•char* ptr1;
struct timeval* ptr2;
char** ptr3;
…
return1st(ptr1,ptr2); return1st(ptr2,ptr3)
•Both calls match the previous function declaration
•This is solved (basically) by giving return1st a
richer type and instantiating it at every call site
–(c refb, d) ®d c refb
–(e refa, f) ®c e refa