std::experimental::packaged_task (library fundamentals TS)
From cppreference.com
                    
                                        
                    < cpp | experimental | lib extensions
                    
                                                            
                    This page is about the modified version of std::packaged_task with type-erased allocator support provided by the Library Fundamentals TSes. For the version of packaged_task provided by the concurrency TS supporting the std::future improvements made by that TS, see std::experimental::concurrency_v1::packaged_task.
| Defined in header  <experimental/future> | ||
| template< class > class packaged_task; //not defined | (1) | (library fundamentals TS) | 
| template< class R, class ...Args >  class packaged_task<R(Args...)>; | (2) | (library fundamentals TS) | 
std::experimental::fundamentals_v1::packaged_task (and std::experimental::fundamentals_v2::packaged_task) is a modified version of std::packaged_task provided by the library fundamentals TS with support for type-erased allocators.
| Contents | 
[edit] Member types
| Member type | Definition | 
| allocator_type | std::experimental::erased_type | 
[edit] Member functions
| constructs the task object (public member function) | |
| retrieves a pointer to the memory resource used by this object to allocate memory (public member function) | 
[edit] Non-member function
| specializes the swapalgorithm(function template) | 
[edit] Helper classes
| specializes the std::uses_allocator type trait (class template specialization) | 
Members identical to std::packaged_task
Member functions
| destructs the task object (public member function of std::packaged_task) | |
| moves the task object (public member function of std::packaged_task) | |
| checks if the task object has a valid function (public member function of std::packaged_task) | |
| swaps two task objects (public member function of std::packaged_task) | |
| Getting the result | |
| returns a std::future associated with the promised result (public member function of std::packaged_task) | |
| Execution | |
| executes the function (public member function of std::packaged_task) | |
| executes the function ensuring that the result is ready only once the current thread exits (public member function of std::packaged_task) | |
| resets the state abandoning any stored results of previous executions (public member function of std::packaged_task) | |