| 2100 | *std::declval<Exp>())), |
| 2101 | detail::enable_if_t<!std::is_void<Ret>::value> * = nullptr> |
| 2102 | constexpr auto expected_map_impl(Exp &&exp, F &&f) { |
| 2103 | using result = ret_t<Exp, detail::decay_t<Ret>>; |
| 2104 | return exp.has_value() ? result(detail::invoke(std::forward<F>(f), |
| 2105 | *std::forward<Exp>(exp))) |
| 2106 | : result(unexpect, std::forward<Exp>(exp).error()); |
| 2107 | } |
| 2108 | |
| 2109 | template <class Exp, class F, |
| 2110 | detail::enable_if_t<!std::is_void<exp_t<Exp>>::value> * = nullptr, |