std::experimental::function
From cppreference.com
                    
                                        
                    < cpp | experimental
                    
                                                            
                    |   Defined in header  <experimental/functional>
  | 
||
|   template< class > class function; /* undefined */  | 
(library fundamentals TS) | |
|   template< class R, class... Args > class function<R(Args...)>  | 
(library fundamentals TS) | |
std::experimental::function is a modified version of std::function with support for type-erased allocators.
Member types
| Type | Definition | 
  allocator_type
 | 
std::experimental::erased_type | 
Member functions
  constructs a new std::experimental::function instance (public member function)  | |
|    assigns a new target  (public member function)  | |
|    swaps the contents  (public member function)  | |
|    retrieves a pointer to the memory resource used by this object to allocate memory  (public member function)  | 
Non-member functions
   specializes the swap algorithm (function template)  | |
|    compares an std::experimental::function with nullptr  (function template)  | 
Helper classes
|    specializes the std::uses_allocator type trait   (class template specialization)  |