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::functioninstance(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 swapalgorithm(function template) | |
| compares an std::experimental::function with nullptr (function template) | 
[edit] Helper classes
| specializes the std::uses_allocator type trait (class template specialization) |