Certo, infatti a questo punto la possibilità è limitata a diversi generi di ordinamento tra interi, per cui tra gli esempi che ho citato se noti ho messo giusto ordine ascendente, discendente e (un po' più esoterico) ordine di distanza da un altro numero; potrei aggiungere, che so, un ordinamento che metta prima i numeri pari e poi i dispari, oppure un ordinamento che confronti il valore assoluto dei numeri; un callback di questo genere ti dà comunque una certa flessibilità (che ovviamente non è quella della generica funzione qsort).

Per inciso, per questo genere di cose è comunque stato dimostrato che i template C++ e i suoi functori battono i puntatori a funzioni C in grande stile, sia per eleganza (dal momento che il functore può accettare direttamente il tipo corretto senza bisogno di fare mille cast da void *) che per velocità. Infatti il codice di un functore passato come argomento template può essere messo inline dal compilatore all'interno dell'algoritmo di ordinamento, tagliando sull'overhead della chiamata a funzione mediante puntatore, il che sui grandi numeri si sente, visto che spesso la funzione di confronto è composta praticamente da una singola istruzione.