std::function
From cppreference.com
                    
                                        
                    < cpp | utility | functional
                    
                                                            
                    |   Defined in header <functional>
   | 
||
|   template< class > class function; /* undefined */  | 
(since C++11) | |
|   template< class R, class... Args > class function<R(Args...)>  | 
(since C++11) | |
Class template std::function is a general-purpose polymorphic function wrapper. Instances of std::function can store, copy, and invoke any callable target -- functions, lambda expressions, bind expressions, or other function objects.
Contents | 
[edit] Member types
| Type | Definition | 
| result_type | R | 
| argument_type | T if sizeof...(Args)==1 and T is the first and only type in Args... | 
| first_argument_type | T1 if sizeof...(Args)==2 and T1 is the first of the two types in Args... | 
| second_argument_type | T2 if sizeof...(Args)==2 and T2 is the second of the two types in Args... | 
[edit] Member functions
|   constructs a new std::function instance  (public member function)  | |
|   destroys a std::function instance  (public member function)  | |
|    assigns the contents  (public member function)  | |
|    swaps the contents  (public member function)  | |
|    assigns a new target  (public member function)  | |
|    checks if a valid target is contained  (public member function)  | |
|    invokes the target  (public member function)  | |
 Target access | |
|    obtains the typeid of the stored target of an std::function  (public member function)  | |
|    obtains a pointer to the stored target of an std::function  (public member function)  | |
[edit] Non-member functions
|    (C++11)  | 
   specializes the std::swap algorithm   (function template)  | 
|    compares an std::function with std::nullptr  (function template)  | |
[edit] Helper classes
|    specializes the std::uses_allocator type trait   (class template specialization)  | |
[edit] See also
|    (C++11)  | 
   the exception thrown when invoking an empty std::function   (class)  | 
|    (C++11)  | 
   binds an object to a pointer to its member function to form independent function object   (function template)  |