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.
Contents | 
[edit] Member types
| Type | Definition | 
  allocator_type
 | 
std::experimental::erased_type | 
[edit] 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)  | 
[edit] Non-member functions
   specializes the swap algorithm (function template)  | 
|
|    compares an std::experimental::function with nullptr  (function template)  | 
[edit] Helper classes
|    specializes the std::uses_allocator type trait   (class template specialization)  |