std::swap(std::optional)
From cppreference.com
                    
                                        
                    
                    
                                                            
                    | Defined in header  <optional> | ||
| template< class T > void swap( optional<T>& lhs, optional<T>& rhs ) noexcept(/* see below */); | (since C++17) | |
Overloads the std::swap algorithm for std::optional. Exchanges the state of lhs with that of rhs. Effectively calls lhs.swap(rhs).
This function template does not participate in overload resolution unless std::is_move_constructible_v<T> and std::is_swappable_v<T> are both true.
Parameters
| lhs, rhs | - | optionalobjects whose states to swap | 
Return value
(none)
Exceptions
noexcept specification:  
noexcept(noexcept(lhs.swap(rhs)))
Example
| This section is incomplete Reason: no example | 
See also
| exchanges the contents (public member function) |