operator=(std::experimental::optional)
From cppreference.com
                    
                                        
                    < cpp | experimental | optional
                    
                                                            
                    | Defined in header  <experimental/optional> | ||
| Compare two  optionalobjects | ||
| template< class T >  constexpr bool operator==( const optional<T>& lhs, const optional<T>& rhs ); | (1) | (library fundamentals TS) | 
| template< class T >  constexpr bool operator<( const optional<T>& lhs, const optional<T>& rhs ); | (2) | (library fundamentals TS) | 
| Compare an  optionalobject with anullopt | ||
| template< class T >  constexpr bool operator==( const optional<T>& opt, std::nullopt_t ); | (3) | (library fundamentals TS) | 
| template< class T >  constexpr bool operator==( std::nullopt_t, const optional<T>& opt ); | (4) | (library fundamentals TS) | 
| template< class T >  constexpr bool operator<( const optional<T>& opt, std::nullopt_t ); | (5) | (library fundamentals TS) | 
| template< class T >  constexpr bool operator<( std::nullopt_t, const optional<T>& opt); | (6) | (library fundamentals TS) | 
| Compare an  optionalobject with aT | ||
| template< class T >  constexpr bool operator==( const optional<T>& opt, const T& v ); | (7) | (library fundamentals TS) | 
| template< class T >  constexpr bool operator==( const T& value, const optional<T>& opt ); | (8) | (library fundamentals TS) | 
| template< class T >  constexpr bool operator<( const optional<T>& opt, const T& v ); | (9) | (library fundamentals TS) | 
Performs comparison operations on optional objects.
1-2) Compares two 
optional objects, lhs and rhs. The contained values are compared only if both lhs and rhs are in engaged states. Otherwise, - 
- 
- 
lhsis considered equal torhsif, and only if, bothlhsandrhsare in disengaged states.
- 
lhsis considered less thanrhsif, and only if,rhsis in engaged state andlhsis not.
 
- 
 
- 
3-6) Compares 
opt with a nullopt. Equivalent to (1-2) when comparing to an optional with engaged state.
7-9) Compares 
opt with a value. The values are compared only if opt is in engaged state. Otherwise, opt is considered less than value.[edit] Parameters
| lhs, rhs, opt | - | an optionalobject to compare | 
| value | - | value to compare to the contained value | 
| Type requirements | ||
| - Tmust meet the requirements ofEqualityComparablein order to use overloads (1, 7-8). | ||
[edit] Return value
1) If bool(lhs) != bool(rhs), returns false
 Otherwise, if bool(lhs) == bool(rhs) == false, returns true
 Otherwise, returns *lhs == *rhs.
2) If bool(rhs) == false returns false
 Otherwise, if lhs == false, returns true
 Otherwise returns std::less<T>{}(*x, *y)
3) Returns !opt.
4) Returns false.
5) Returns !opt.
6) Returns bool(opt)
7-8) Returns bool(opt) ? *opt == value : false.
9) Returns bool(opt) ? std::less<T>{}(*opt, value) : true.
[edit] Exceptions
1-2) (none)
3-6) 
noexcept specification:  
noexcept
  
7-9) (none)