Functions support distributed overriding. Functors do not. You must define all Functor overloads within yourself; You can add new function overloads anywhere.
Functions support ADL (argument-dependent search), allowing overloading in the namespace associated with the argument. Functors do not.
Function pointers are a (type) functional without storing a type that is a POD, as evidenced by the conversion of inactive lambdas into it. Such functions (POD, stateless, type erasure) are useful.
Yakk
source share