STL also defines function objects (or functors) which are
basically template function pointers wrapped in template
classes. These classes provide a '()' operator which is used for invoking
the function. STL also provides adaptors to convert normal C++
function pointers to function objects.