static constexpr decltype(auto) visit(V&& v, ST&& st) noexcept { if (value_or_error::has_value(forward<ST>(st))) return JASEL_INVOKE(forward<V>(v),value_or_error::deref(forward<ST>(st))); return JASEL_INVOKE(forward<V>(v), value_or_error::error(forward<ST>(st)) ); }
BOOST_CXX14_CONSTEXPR value_type_t<remove_cvref_t<N>> resolve(N&& n, F&& f) { if (value_or_none::has_value(forward<N>(n))) { return value_or_none::deref(forward<N>(n)); } return JASEL_INVOKE(std::forward<F>(f), value_or_none::none<remove_cvref_t<N>>() ); }
BOOST_CXX14_CONSTEXPR value_type_t<meta::uncvref_t<N>> apply_or(N&& n, F&& f, T&& v) { if (nullable::has_value(forward<N>(n))) { return JASEL_INVOKE(std::forward<F>(f), nullable::deref(forward<N>(n))); } return forward<T>(v); }