In C++, the regular function syntax is extended with the concept of a callable, short for callable entity—a callable is something that can be called in the same way as a function. Some examples of callables are functions (of course), function pointers, or objects with operator(), also known as functors:
void f(int i);struct G { void operator()(int i);};f(5); // FunctionG g; g(5); // Functor
It is often useful to define a callable entity in a local context, right next to the place it is used. For example, to sort a sequence of objects, we may want to define a custom comparison function. We can use an ordinary function for this:
bool compare(int i, int j) { return i < j; }void do_work() { std::vector<int> v; ..... std::sort(v.begin(), ...