| 987 | // && std::is_move_assignable<T>::value |
| 988 | ) |
| 989 | operator=( optional && other ) noexcept |
| 990 | { |
| 991 | if ( has_value() == true && other.has_value() == false ) reset(); |
| 992 | else if ( has_value() == false && other.has_value() == true ) initialize( std::move( *other ) ); |
| 993 | else if ( has_value() == true && other.has_value() == true ) contained.value() = std::move( *other ); |
| 994 | return *this; |
| 995 | } |
| 996 | |
| 997 | // 4 (C++11) - move-assign from value |
| 998 | template< typename U = T > |