composite.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 1,423 行 · 第 1/4 页

HPP
1,423
字号
template <typename OperationT, typename TupleT,    typename A, typename B, typename C, typename D>struct composite4_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    >::type type;};//////////////////////////////////template <typename OperationT,    typename A, typename B, typename C, typename D>struct composite<OperationT,    A, B, C, D, nil_t, nil_t,#if PHOENIX_LIMIT > 6    nil_t, nil_t, nil_t,#if PHOENIX_LIMIT > 9    nil_t, nil_t, nil_t,#if PHOENIX_LIMIT > 12    nil_t, nil_t, nil_t,#endif#endif#endif    nil_t   //  Unused> {    typedef composite<OperationT, A, B, C, D> self_t;    template <typename TupleT>    struct result {        typedef typename composite4_result<            OperationT, TupleT, A, B, C, D        >::type type;    };    composite(OperationT const& op_,        A const& a_, B const& b_, C const& c_, D const& d_)    :   op(op_), a(a_), b(b_), c(c_), d(d_) {}    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);        return op(ra, rb, rc, rd);    }    mutable OperationT op; //  operation    A a; B b; C c; D d; //  actors};///////////////////////////////////////////////////////////////////////////////////  composite <5 actors> class/////////////////////////////////////////////////////////////////////////////////template <typename OperationT, typename TupleT,    typename A, typename B, typename C, typename D, typename E>struct composite5_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    >::type type;};//////////////////////////////////template <typename OperationT,    typename A, typename B, typename C, typename D, typename E>struct composite<OperationT,    A, B, C, D, E, nil_t,#if PHOENIX_LIMIT > 6    nil_t, nil_t, nil_t,#if PHOENIX_LIMIT > 9    nil_t, nil_t, nil_t,#if PHOENIX_LIMIT > 12    nil_t, nil_t, nil_t,#endif#endif#endif    nil_t   //  Unused> {    typedef composite<OperationT, A, B, C, D, E> self_t;    template <typename TupleT>    struct result {        typedef typename composite5_result<            OperationT, TupleT, A, B, C, D, E        >::type type;    };    composite(OperationT const& op_,        A const& a_, B const& b_, C const& c_, D const& d_, E const& e_)    :   op(op_), a(a_), b(b_), c(c_), d(d_), e(e_) {}    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);        return op(ra, rb, rc, rd, re);    }    mutable OperationT op; //  operation    A a; B b; C c; D d; E e; //  actors};///////////////////////////////////////////////////////////////////////////////////  composite <6 actors> class/////////////////////////////////////////////////////////////////////////////////template <typename OperationT, typename TupleT,    typename A, typename B, typename C, typename D, typename E,    typename F>struct composite6_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    >::type type;};//////////////////////////////////template <typename OperationT,    typename A, typename B, typename C, typename D, typename E,    typename F>struct composite<OperationT,    A, B, C, D, E, F,#if PHOENIX_LIMIT > 6    nil_t, nil_t, nil_t,#if PHOENIX_LIMIT > 9    nil_t, nil_t, nil_t,#if PHOENIX_LIMIT > 12    nil_t, nil_t, nil_t,#endif#endif#endif    nil_t   //  Unused> {    typedef composite<OperationT, A, B, C, D, E, F> self_t;    template <typename TupleT>    struct result {        typedef typename composite6_result<            OperationT, TupleT, A, B, C, D, E, F        >::type type;    };    composite(OperationT const& op_,        A const& a_, B const& b_, C const& c_, D const& d_, E const& e_,        F const& f_)    :   op(op_), a(a_), b(b_), c(c_), d(d_), e(e_),        f(f_) {}    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);        return op(ra, rb, rc, rd, re, rf);    }    mutable OperationT op; //  operation    A a; B b; C c; D d; E e; F f; //  actors};#if PHOENIX_LIMIT > 6///////////////////////////////////////////////////////////////////////////////////  composite <7 actors> class/////////////////////////////////////////////////////////////////////////////////template <typename OperationT, typename TupleT,    typename A, typename B, typename C, typename D, typename E,    typename F, typename G>struct composite7_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    >::type type;};//////////////////////////////////template <typename OperationT,    typename A, typename B, typename C, typename D, typename E,    typename F, typename G>struct composite<OperationT,    A, B, C, D, E, F, G, nil_t, nil_t,#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> self_t;    template <typename TupleT>    struct result {        typedef typename composite7_result<            OperationT, TupleT, A, B, C, D, E, F, G        >::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_)    :   op(op_), a(a_), b(b_), c(c_), d(d_), e(e_),        f(f_), g(g_) {}    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);        return op(ra, rb, rc, rd, re, rf, rg);    }    mutable OperationT op; //  operation    A a; B b; C c; D d; E e; F f; G g; //  actors};///////////////////////////////////////////////////////////////////////////////////  composite <8 actors> class/////////////////////////////////////////////////////////////////////////////////template <typename OperationT, typename TupleT,    typename A, typename B, typename C, typename D, typename E,    typename F, typename G, typename H>struct composite8_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    >::type type;};//////////////////////////////////template <typename OperationT,    typename A, typename B, typename C, typename D, typename E,    typename F, typename G, typename H>struct composite<OperationT,    A, B, C, D, E, F, G, H, nil_t,#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> self_t;    template <typename TupleT>    struct result {        typedef typename composite8_result<            OperationT, TupleT, A, B, C, D, E, F, G, H        >::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_)    :   op(op_), a(a_), b(b_), c(c_), d(d_), e(e_),        f(f_), g(g_), h(h_) {}    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);        return op(ra, rb, rc, rd, re, rf, rg, rh);    }    mutable OperationT op; //  operation    A a; B b; C c; D d; E e; F f; G g; H h; //  actors};///////////////////////////////////////////////////////////////////////////////////  composite <9 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>struct composite9_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,

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?