|
|
|
@ -72,21 +72,18 @@ struct |
|
|
|
|
|
|
|
|
|
/* Pointer-to-member-function. */ |
|
|
|
|
template <typename Appl, typename Val> auto |
|
|
|
|
impl (Appl&& a, Val &&v, hb_priority<5>) const HB_AUTO_RETURN_EXPR (hb_forward<Val> (v).*a ()) |
|
|
|
|
template <typename Appl, typename Val> auto |
|
|
|
|
impl (Appl&& a, Val &&v, hb_priority<4>) const HB_AUTO_RETURN_EXPR (hb_forward<Val> (v)->*a ()) |
|
|
|
|
impl (Appl&& a, Val &&v, hb_priority<2>) const HB_AUTO_RETURN_EXPR |
|
|
|
|
(hb_forward<Val> (hb_deref_pointer (v)).*a ()) |
|
|
|
|
|
|
|
|
|
/* Pointer-to-member. */ |
|
|
|
|
template <typename Appl, typename Val> auto |
|
|
|
|
impl (Appl&& a, Val &&v, hb_priority<3>) const HB_AUTO_RETURN_EXPR (hb_forward<Val> (v).*a) |
|
|
|
|
template <typename Appl, typename Val> auto |
|
|
|
|
impl (Appl&& a, Val &&v, hb_priority<2>) const HB_AUTO_RETURN_EXPR (hb_forward<Val> (v)->*a) |
|
|
|
|
impl (Appl&& a, Val &&v, hb_priority<1>) const HB_AUTO_RETURN_EXPR |
|
|
|
|
(hb_forward<Val> (hb_deref_pointer (v)).*a) |
|
|
|
|
|
|
|
|
|
/* Operator(). */ |
|
|
|
|
template <typename Appl, typename Val> auto |
|
|
|
|
impl (Appl&& a, Val &&v, hb_priority<1>) const HB_AUTO_RETURN_EXPR (a (hb_forward<Val> (v))) |
|
|
|
|
template <typename Appl, typename Val> auto |
|
|
|
|
impl (Appl&& a, Val &&v, hb_priority<0>) const HB_AUTO_RETURN_EXPR ((*a) (hb_forward<Val> (v))) |
|
|
|
|
impl (Appl&& a, Val &&v, hb_priority<0>) const HB_AUTO_RETURN_EXPR |
|
|
|
|
(hb_deref_pointer (a) (hb_forward<Val> (v))) |
|
|
|
|
|
|
|
|
|
public: |
|
|
|
|
|
|
|
|
@ -104,10 +101,8 @@ struct |
|
|
|
|
private: |
|
|
|
|
|
|
|
|
|
template <typename Pred, typename Val> auto |
|
|
|
|
impl (Pred&& p, Val &&v, hb_priority<2>) const HB_AUTO_RETURN_EXPR (p->has (v)) |
|
|
|
|
|
|
|
|
|
template <typename Pred, typename Val> auto |
|
|
|
|
impl (Pred&& p, Val &&v, hb_priority<1>) const HB_AUTO_RETURN_EXPR (p.has (v)) |
|
|
|
|
impl (Pred&& p, Val &&v, hb_priority<1>) const HB_AUTO_RETURN_EXPR |
|
|
|
|
(hb_deref_pointer (p).has (v)) |
|
|
|
|
|
|
|
|
|
template <typename Pred, typename Val> auto |
|
|
|
|
impl (Pred&& p, Val &&v, hb_priority<0>) const HB_AUTO_RETURN_EXPR |
|
|
|
@ -132,10 +127,8 @@ struct |
|
|
|
|
private: |
|
|
|
|
|
|
|
|
|
template <typename Proj, typename Val> auto |
|
|
|
|
impl (Proj&& f, Val &&v, hb_priority<2>) const HB_AUTO_RETURN_EXPR (f->get (hb_forward<Val> (v))) |
|
|
|
|
|
|
|
|
|
template <typename Proj, typename Val> auto |
|
|
|
|
impl (Proj&& f, Val &&v, hb_priority<1>) const HB_AUTO_RETURN_EXPR (f.get (hb_forward<Val> (v))) |
|
|
|
|
impl (Proj&& f, Val &&v, hb_priority<1>) const HB_AUTO_RETURN_EXPR |
|
|
|
|
(hb_deref_pointer (f).get (hb_forward<Val> (v))) |
|
|
|
|
|
|
|
|
|
template <typename Proj, typename Val> auto |
|
|
|
|
impl (Proj&& f, Val &&v, hb_priority<0>) const HB_AUTO_RETURN_EXPR |
|
|
|
|