> *Mandates*: `U` is a specialization of `expected` and `is_same_v<U::error_type, E>` is `true`. Though `U::error_type` is obviously a type, `typename` is necessary. `is_same_v<U::error_type, E>` should be `is_same_v<typename U::error_type, E>`.