26 #ifndef MLN_TRAIT_NEXT_SOLVE_PROXY_HH
27 # define MLN_TRAIT_NEXT_SOLVE_PROXY_HH
34 # include <mln/core/concept/object.hh>
35 # include <mln/core/concept/proxy.hh>
36 # include <mln/core/concept/proxy.hxx>
38 # include <mln/trait/next/solve.hh>
51 template <
typename Name,
typename L_,
typename R_ >
53 template <
typename Name,
typename T_ >
struct solve_unary;
59 template <
typename Op,
typename P >
60 struct set_unary_< Op, mln::Proxy, P >
62 typedef mlc_unqualif(mln_q_subject(P)) S;
63 typedef mln_trait_nunary(Op, S)
ret;
68 template < typename Op, typename L, typename R >
69 struct set_binary_< Op, mln::Proxy, L, mln::Proxy, R >
71 typedef mln::internal::helper_unprox_binop<L, R> helper;
72 typedef mln_trait_nbinary(Op,
73 typename helper::L_ret,
74 typename helper::R_ret) ret;
77 template < typename Op, typename P, typename O >
78 struct set_binary_< Op, mln::Proxy, P, mln::Object, O >
80 typedef mlc_unqualif(mln_q_subject(P)) S;
81 typedef mln_trait_nbinary(Op, S, O) ret;
84 template < typename Op, typename O, typename P >
85 struct set_binary_< Op, mln::Object, O, mln::Proxy, P >
87 typedef mlc_unqualif(mln_q_subject(P)) S;
88 typedef mln_trait_nbinary(Op, O, S) ret;
98 #endif // ! MLN_TRAIT_NEXT_SOLVE_PROXY_HH