17 : data( std::move( value ) )
22 : data( std::move(
error ) )
26 [[nodiscard]]
bool is_ok()
const {
return std::holds_alternative< T >( data ); }
27 [[nodiscard]]
bool is_err()
const {
return std::holds_alternative< E >( data ); }
30 T&
unwrap() {
return std::get< T >( data ); }
31 const T&
unwrap()
const {
return std::get< T >( data ); }
34 E&
error() {
return std::get< E >( data ); }
35 const E&
error()
const {
return std::get< E >( data ); }
38 T
unwrap_or( T default_value )
const {
return is_ok() ? std::get< T >( data ) : default_value; }
41 template <
typename Func >
45 return f( std::get< T >( data ) );
46 return std::get< E >( data );
50 std::variant< T, E > data;