20 alternative_traits<std::remove_cvref_t<F>>
::empty();
26 alternative_traits<std::remove_cvref_t<F>>
::combine;
48 constexpr auto operator*()
const noexcept(
59 template <
class Fa,
class Fb>
60 requires std::same_as<std::remove_cvref_t<Fa>, std::remove_cvref_t<Fb>>
61 constexpr auto operator()(Fa&& fa, Fb&& fb)
const noexcept(
68 inline namespace cpo {
79 namespace operators::alternatives {
81 template <
class Fa,
class Fb>
82 requires std::same_as<std::remove_cvref_t<Fa>, std::remove_cvref_t<Fb>>
84 noexcept(
noexcept(
mpc::combine(std::forward<Fa>(fa), std::forward<Fb>(fb))))
85 ->
decltype(
mpc::combine(std::forward<Fa>(fa), std::forward<Fb>(fb))) {
86 return mpc::combine(std::forward<Fa>(fa), std::forward<Fb>(fb));
constexpr auto operator||(Fa &&fa, Fb &&fb) noexcept(noexcept(mpc::combine(std::forward< Fa >(fa), std::forward< Fb >(fb)))) -> decltype(mpc::combine(std::forward< Fa >(fa), std::forward< Fb >(fb)))
combine :: f a -> f a -> f a
Definition: alternative.hpp:83
alternative_traits_specialized
Definition: alternative.hpp:32
Requires applicative and empty and combine is valid in alternative_traits .
Definition: alternative.hpp:37
Requires functor and pure, seq_apply, liftA2, discard2nd and discard1st is valid in applicative_trait...
Definition: applicative.hpp:32
has_alternative_traits_combine
Definition: alternative.hpp:25
has_alternative_traits_empty
Definition: alternative.hpp:19
constexpr detail::empty_op< F > empty
empty :: f a
Definition: alternative.hpp:71
constexpr partial< detail::combine_op > combine
combine :: f a -> f a -> f a
Definition: alternative.hpp:74
class Applicative f => Alternative f where
Definition: alternative.hpp:14
combine :: f a -> f a -> f a
Definition: alternative.hpp:58
empty :: f a
Definition: alternative.hpp:47
Implements a perfect-forwarding call wrapper.
Definition: partial.hpp:63