Al usar qsort en C, se pasa una función de comparación, p.Punteros de función en el operador de dirección C "innecesarios"
int cmp(const void*, const void*);
el prototipo muy de qsort espera un int (*) (const void *, const void *) por lo que llaman:
qsort(..., cmp);
pero es igualmente válida para llamar:
qsort(..., &cmp);
y esto es lo que tendríamos que hacer si aprobamos una función de miembro estática en C++. Kernighan & Ritchie (2da Edición, 5.11 "Punteros a las Funciones" p119) establece que "dado que se conoce que [cmp] es una función, el operador & no es necesario, de la misma manera que no es necesario antes del nombre de una matriz. "
¿Alguien más se siente un poco incómodo con esto (especialmente con respecto a la seguridad de tipo)?
Cierto, pero usar ese molde es una cachiporra para decirle al compilador "créeme, sé lo que estoy haciendo, incluso si piensas lo contrario". –