expected( value_type const & rhs ) : has_value( true ) { contained.construct_value( rhs ); }
expected( expected const & rhs ) : has_value( rhs.has_value ) { if ( has_value ) contained.construct_value( rhs.contained.value() ); else contained.construct_error( rhs.contained.error() ); }
void initialize_value( V const & v ) { assert( ! has_value ); contained.construct_value( v ); has_value = true; }