(int ( * ) (void*, void*))(numeric ? numcmp : strcmp));
numcmp and strcmp are functions with two arguments.
I understand what the conditional operator is doing. That is straightforward.
I can reason that this will evaluate to numcmp(void*, void*) or strcmp(void*, void*), but I don't understand why? Particularly, the: int (*), confuses me.