composite.hpp
来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 1,423 行 · 第 1/4 页
HPP
1,423 行
typename actor_result<I, TupleT>::plain_type >::type type;};//////////////////////////////////template <typename OperationT, typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I>struct composite<OperationT, A, B, C, D, E, F, G, H, I,#if PHOENIX_LIMIT > 9 nil_t, nil_t, nil_t,#if PHOENIX_LIMIT > 12 nil_t, nil_t, nil_t,#endif#endif nil_t // Unused> { typedef composite<OperationT, A, B, C, D, E, F, G, H, I> self_t; template <typename TupleT> struct result { typedef typename composite9_result< OperationT, TupleT, A, B, C, D, E, F, G, H, I >::type type; }; composite(OperationT const& op_, A const& a_, B const& b_, C const& c_, D const& d_, E const& e_, F const& f_, G const& g_, H const& h_, I const& i_) : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_), f(f_), g(g_), h(h_), i(i_) {} template <typename TupleT> typename actor_result<self_t, TupleT>::type eval(TupleT const& args) const { typename actor_result<A, TupleT>::type ra = a.eval(args); typename actor_result<B, TupleT>::type rb = b.eval(args); typename actor_result<C, TupleT>::type rc = c.eval(args); typename actor_result<D, TupleT>::type rd = d.eval(args); typename actor_result<E, TupleT>::type re = e.eval(args); typename actor_result<F, TupleT>::type rf = f.eval(args); typename actor_result<G, TupleT>::type rg = g.eval(args); typename actor_result<H, TupleT>::type rh = h.eval(args); typename actor_result<I, TupleT>::type ri = i.eval(args); return op(ra, rb, rc, rd, re, rf, rg, rh, ri); } mutable OperationT op; // operation A a; B b; C c; D d; E e; F f; G g; H h; I i; // actors};#if PHOENIX_LIMIT > 9/////////////////////////////////////////////////////////////////////////////////// composite <10 actors> class/////////////////////////////////////////////////////////////////////////////////template <typename OperationT, typename TupleT, typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I, typename J>struct composite10_result { typedef typename OperationT::template result< typename actor_result<A, TupleT>::plain_type, typename actor_result<B, TupleT>::plain_type, typename actor_result<C, TupleT>::plain_type, typename actor_result<D, TupleT>::plain_type, typename actor_result<E, TupleT>::plain_type, typename actor_result<F, TupleT>::plain_type, typename actor_result<G, TupleT>::plain_type, typename actor_result<H, TupleT>::plain_type, typename actor_result<I, TupleT>::plain_type, typename actor_result<J, TupleT>::plain_type >::type type;};//////////////////////////////////template <typename OperationT, typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I, typename J>struct composite<OperationT, A, B, C, D, E, F, G, H, I, J, nil_t, nil_t,#if PHOENIX_LIMIT > 12 nil_t, nil_t, nil_t,#endif nil_t // Unused> { typedef composite<OperationT, A, B, C, D, E, F, G, H, I, J> self_t; template <typename TupleT> struct result { typedef typename composite10_result< OperationT, TupleT, A, B, C, D, E, F, G, H, I, J >::type type; }; composite(OperationT const& op_, A const& a_, B const& b_, C const& c_, D const& d_, E const& e_, F const& f_, G const& g_, H const& h_, I const& i_, J const& j_) : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_), f(f_), g(g_), h(h_), i(i_), j(j_) {} template <typename TupleT> typename actor_result<self_t, TupleT>::type eval(TupleT const& args) const { typename actor_result<A, TupleT>::type ra = a.eval(args); typename actor_result<B, TupleT>::type rb = b.eval(args); typename actor_result<C, TupleT>::type rc = c.eval(args); typename actor_result<D, TupleT>::type rd = d.eval(args); typename actor_result<E, TupleT>::type re = e.eval(args); typename actor_result<F, TupleT>::type rf = f.eval(args); typename actor_result<G, TupleT>::type rg = g.eval(args); typename actor_result<H, TupleT>::type rh = h.eval(args); typename actor_result<I, TupleT>::type ri = i.eval(args); typename actor_result<J, TupleT>::type rj = j.eval(args); return op(ra, rb, rc, rd, re, rf, rg, rh, ri, rj); } mutable OperationT op; // operation A a; B b; C c; D d; E e; F f; G g; H h; I i; J j; // actors};/////////////////////////////////////////////////////////////////////////////////// composite <11 actors> class/////////////////////////////////////////////////////////////////////////////////template <typename OperationT, typename TupleT, typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I, typename J, typename K>struct composite11_result { typedef typename OperationT::template result< typename actor_result<A, TupleT>::plain_type, typename actor_result<B, TupleT>::plain_type, typename actor_result<C, TupleT>::plain_type, typename actor_result<D, TupleT>::plain_type, typename actor_result<E, TupleT>::plain_type, typename actor_result<F, TupleT>::plain_type, typename actor_result<G, TupleT>::plain_type, typename actor_result<H, TupleT>::plain_type, typename actor_result<I, TupleT>::plain_type, typename actor_result<J, TupleT>::plain_type, typename actor_result<K, TupleT>::plain_type >::type type;};//////////////////////////////////template <typename OperationT, typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I, typename J, typename K>struct composite<OperationT, A, B, C, D, E, F, G, H, I, J, K, nil_t,#if PHOENIX_LIMIT > 12 nil_t, nil_t, nil_t,#endif nil_t // Unused> { typedef composite<OperationT, A, B, C, D, E, F, G, H, I, J, K> self_t; template <typename TupleT> struct result { typedef typename composite11_result< OperationT, TupleT, A, B, C, D, E, F, G, H, I, J, K >::type type; }; composite(OperationT const& op_, A const& a_, B const& b_, C const& c_, D const& d_, E const& e_, F const& f_, G const& g_, H const& h_, I const& i_, J const& j_, K const& k_) : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_), f(f_), g(g_), h(h_), i(i_), j(j_), k(k_) {} template <typename TupleT> typename actor_result<self_t, TupleT>::type eval(TupleT const& args) const { typename actor_result<A, TupleT>::type ra = a.eval(args); typename actor_result<B, TupleT>::type rb = b.eval(args); typename actor_result<C, TupleT>::type rc = c.eval(args); typename actor_result<D, TupleT>::type rd = d.eval(args); typename actor_result<E, TupleT>::type re = e.eval(args); typename actor_result<F, TupleT>::type rf = f.eval(args); typename actor_result<G, TupleT>::type rg = g.eval(args); typename actor_result<H, TupleT>::type rh = h.eval(args); typename actor_result<I, TupleT>::type ri = i.eval(args); typename actor_result<J, TupleT>::type rj = j.eval(args); typename actor_result<K, TupleT>::type rk = k.eval(args); return op(ra, rb, rc, rd, re, rf, rg, rh, ri, rj, rk); } mutable OperationT op; // operation A a; B b; C c; D d; E e; F f; G g; H h; I i; J j; K k;// actors};/////////////////////////////////////////////////////////////////////////////////// composite <12 actors> class/////////////////////////////////////////////////////////////////////////////////template <typename OperationT, typename TupleT, typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I, typename J, typename K, typename L>struct composite12_result { typedef typename OperationT::template result< typename actor_result<A, TupleT>::plain_type, typename actor_result<B, TupleT>::plain_type, typename actor_result<C, TupleT>::plain_type, typename actor_result<D, TupleT>::plain_type, typename actor_result<E, TupleT>::plain_type, typename actor_result<F, TupleT>::plain_type, typename actor_result<G, TupleT>::plain_type, typename actor_result<H, TupleT>::plain_type, typename actor_result<I, TupleT>::plain_type, typename actor_result<J, TupleT>::plain_type, typename actor_result<K, TupleT>::plain_type, typename actor_result<L, TupleT>::plain_type >::type type;};//////////////////////////////////template <typename OperationT, typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I, typename J, typename K, typename L>struct composite<OperationT, A, B, C, D, E, F, G, H, I, J, K, L,#if PHOENIX_LIMIT > 12 nil_t, nil_t, nil_t,#endif nil_t // Unused> { typedef composite<OperationT, A, B, C, D, E, F, G, H, I, J, K, L> self_t; template <typename TupleT> struct result { typedef typename composite12_result< OperationT, TupleT, A, B, C, D, E, F, G, H, I, J, K, L >::type type; }; composite(OperationT const& op_, A const& a_, B const& b_, C const& c_, D const& d_, E const& e_, F const& f_, G const& g_, H const& h_, I const& i_, J const& j_, K const& k_, L const& l_) : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_), f(f_), g(g_), h(h_), i(i_), j(j_), k(k_), l(l_) {} template <typename TupleT> typename actor_result<self_t, TupleT>::type eval(TupleT const& args) const { typename actor_result<A, TupleT>::type ra = a.eval(args); typename actor_result<B, TupleT>::type rb = b.eval(args); typename actor_result<C, TupleT>::type rc = c.eval(args); typename actor_result<D, TupleT>::type rd = d.eval(args); typename actor_result<E, TupleT>::type re = e.eval(args); typename actor_result<F, TupleT>::type rf = f.eval(args); typename actor_result<G, TupleT>::type rg = g.eval(args); typename actor_result<H, TupleT>::type rh = h.eval(args); typename actor_result<I, TupleT>::type ri = i.eval(args); typename actor_result<J, TupleT>::type rj = j.eval(args); typename actor_result<K, TupleT>::type rk = k.eval(args); typename actor_result<L, TupleT>::type rl = l.eval(args); return op(ra, rb, rc, rd, re, rf, rg, rh, ri, rj, rk, rl); } mutable OperationT op; // operation A a; B b; C c; D d; E e; F f; G g; H h; I i; J j; K k; L l;// actors};#if PHOENIX_LIMIT > 12/////////////////////////////////////////////////////////////////////////////////// composite <13 actors> class/////////////////////////////////////////////////////////////////////////////////template <typename OperationT, typename TupleT, typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I, typename J, typename K, typename L, typename M>struct composite13_result { typedef typename OperationT::template result< typename actor_result<A, TupleT>::plain_type, typename actor_result<B, TupleT>::plain_type, typename actor_result<C, TupleT>::plain_type, typename actor_result<D, TupleT>::plain_type, typename actor_result<E, TupleT>::plain_type, typename actor_result<F, TupleT>::plain_type, typename actor_result<G, TupleT>::plain_type, typename actor_result<H, TupleT>::plain_type, typename actor_result<I, TupleT>::plain_type, typename actor_result<J, TupleT>::plain_type, typename actor_result<K, TupleT>::plain_type, typename actor_result<L, TupleT>::plain_type, typename actor_result<M, TupleT>::plain_type >::type type;};//////////////////////////////////template <typename OperationT, typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I, typename J, typename K, typename L, typename M>struct composite<OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M, nil_t, nil_t, nil_t> { typedef composite<OperationT, A, B, C, D, E, F, G, H, I, J, K, L, M> self_t; template <typename TupleT> struct result { typedef typename composite13_result< OperationT, TupleT, A, B, C, D, E, F, G, H, I, J, K, L, M >::type type; }; composite(OperationT const& op_, A const& a_, B const& b_, C const& c_, D const& d_, E const& e_, F const& f_, G const& g_, H const& h_, I const& i_, J const& j_, K const& k_, L const& l_, M const& m_) : op(op_), a(a_), b(b_), c(c_), d(d_), e(e_), f(f_), g(g_), h(h_), i(i_), j(j_), k(k_), l(l_), m(m_) {} template <typename TupleT> typename actor_result<self_t, TupleT>::type eval(TupleT const& args) const { typename actor_result<A, TupleT>::type ra = a.eval(args); typename actor_result<B, TupleT>::type rb = b.eval(args);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?