template<class F> constexpr auto and_then(F&& f) const;
template<class F> constexpr optional<remove_cv_t<invoke_result_t<F, T&>>> transform(F&& f) const;
template<class F> constexpr optional or_else(F&& f) const;