cpp/utility/functional/function

Class template is a general-purpose polymorphic function wrapper. Instances of can store, copy, and invoke any   target -- functions (via pointers thereto), lambda expressions, bind expressions, or other function objects, as well as pointers to member functions and pointers to data members.

The stored callable object is called the target of. If a contains no target, it is called empty. Invoking the target of an empty results in std exception being thrown.

satisfies the requirements of and.