Function objects have the operator() defined and used for more effective use of the library. When a pointer to a function would normally be passed to an algorithm function the library is specified to accept an object with operator() defined. The use of function objects with function templates increases the power and efficiency of the library
Struct Unary_function and Struct Binary_function classes are provided to simplify the typedef of the argument and result types.