std::promise<R>::operator=
From cppreference.com
                    
                                        
                    
                    
                                                            
                    | promise& operator=( promise&& other ) noexcept; | (1) | (since C++11) | 
| promise& operator=( const promise& rhs ) = delete; | (2) | (since C++11) | 
Assigns the contents.
1) Move assignment operator. First, abandons the shared state (as in ~promise()), then assigns the shared state of 
other as if by executing std::promise(std::move(other)).swap(*this).2) 
promise is not copy-assignable.Parameters
| other | - | another promiseto acquire the state from | 
Return value
*this