everest% CC fptr3.C "fptr3.C", line 43: error(1164): argument of type "void (*)(int *)" is incompatible with parameter of type "void (*)(void *)" apply(&add3, &m) ; ^ "fptr3.C", line 45: error(1164): argument of type "void (*)(double *)" is incompatible with parameter of type "void (*)(void *)" apply(&add5, &x) ; ^ "fptr3.C", line 49: error(1515): a value of type "void (*)(int *)" cannot be assigned to an entity of type "void (*)(void *)" fptr = &add3 ; ^ "fptr3.C", line 52: error(1515): a value of type "void (*)(double *)" cannot be assigned to an entity of type "void (*)(void *)" fptr = &add5 ; ^ 4 errors detected in the compilation of "fptr3.C". everest% everest% g++ fptr3.C ld: WARNING 84: /usr/lib32/libm.so is not used for resolving any symbol. everest% everest% a.out After add3(&m), m = 5 After add5(&x), x = 10 Applying add3 to m, m = 8 Applying add5 to x, x = 15 Applying fptr to m, m = 11 Applying fptr to x, x = 20 everest%