std::experimental::function<R(Args...)>::swap
From cppreference.com
                    
                                        
                    < cpp | experimental | function
                    
                                                            
                    | void swap( function& other ); | (library fundamentals TS) | |
Exchanges the stored callable objects of *this and other.
The allocators of *this and other are not exchanged.
The behavior is undefined if *this->get_memory_resource() != *other.get_memory_resource().
Parameters
| other | - | function wrapper to exchange the stored callable object with | 
Return value
(none)