template<class T>
typename std::remove_cvref_t<T>::value_type;
typename std::remove_cvref_t<T>::error_type;
typename std::remove_cvref_t<T>::unexpected_type;
e.has_value();
e.error();
requires std::is_same_v<void, typename std::remove_cvref_t<T>::value_type> || requires(T e) { e.value(); };
}