c.user, even if what you proposed were absolutely legal, what advantage would it provide? You would require that users of your comparator cast the function pointer for each use, whereas with the canonical version they would just need to provide the function pointer to the comparator.