Используя qsort в C, мы передаем функцию сравнения, например,
int cmp(const void*, const void*);
прототип qsort ожидает int (*) (const void *, const void *), поэтому мы вызываем:
qsort(..., cmp);
но в равной степени можно звонить:
qsort(..., &cmp);
и это то, что мы должны были бы сделать, если бы передали статическую функцию-член в C ++. Kernighan & Ritchie (2nd Edition, 5.11 «Pointers To Functions» p119) утверждает, что «поскольку [cmp], как известно, является функцией, оператор & не является необходимым, так же как он не нужен перед именем массива. «
Кто-нибудь еще чувствует себя немного неловко с этим (особенно в отношении безопасности типов)?