The Boost.Function library contains a family of class templates that are function object wrappers.
Function object templates for dynamic and static object creation
Adapters to allow generic function objects to accept arbitrary arguments
Overload different functions into a single function object.