actor.hpp

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

HPP
596
字号
//////////////////////////////////template <>struct as_actor<nil_t> {    typedef nil_t type;    static nil_t convert(nil_t /*x*/)    { return nil_t(); }};//////////////////////////////////template <>struct as_actor<void> {    typedef void type;    //  ERROR!!!};///////////////////////////////////////////////////////////////////////////////////  actor class implementation/////////////////////////////////////////////////////////////////////////////////template <typename BaseT>actor<BaseT>::actor():   BaseT() {}//////////////////////////////////template <typename BaseT>actor<BaseT>::actor(BaseT const& base):   BaseT(base) {}//////////////////////////////////template <typename BaseT>inline typename actor_result<BaseT, tuple<> >::typeactor<BaseT>::operator()() const{    return BaseT::eval(tuple<>());}//////////////////////////////////template <typename BaseT>template <typename A>inline typename actor_result<BaseT, tuple<A&> >::typeactor<BaseT>::operator()(A& a) const{    return BaseT::eval(tuple<A&>(a));}//////////////////////////////////template <typename BaseT>template <typename A, typename B>inline typename actor_result<BaseT, tuple<A&, B&> >::typeactor<BaseT>::operator()(A& a, B& b) const{    return BaseT::eval(tuple<A&, B&>(a, b));}//////////////////////////////////template <typename BaseT>template <typename A, typename B, typename C>inline typename actor_result<BaseT, tuple<A&, B&, C&> >::typeactor<BaseT>::operator()(A& a, B& b, C& c) const{    return BaseT::eval(tuple<A&, B&, C&>(a, b, c));}#if PHOENIX_LIMIT > 3//////////////////////////////////template <typename BaseT>template <typename A, typename B, typename C, typename D>inline typename actor_result<BaseT, tuple<A&, B&, C&, D&> >::typeactor<BaseT>::operator()(A& a, B& b, C& c, D& d) const{    return BaseT::eval(tuple<A&, B&, C&, D&>(a, b, c, d));}//////////////////////////////////template <typename BaseT>template <typename A, typename B, typename C, typename D, typename E>inline typename actor_result<BaseT, tuple<A&, B&, C&, D&, E&> >::typeactor<BaseT>::operator()(A& a, B& b, C& c, D& d, E& e) const{    return BaseT::eval(tuple<A&, B&, C&, D&, E&>(a, b, c, d, e));}//////////////////////////////////template <typename BaseT>template <    typename A, typename B, typename C, typename D, typename E,    typename F>inline typename actor_result<BaseT,    tuple<A&, B&, C&, D&, E&, F&>>::typeactor<BaseT>::operator()(    A& a, B& b, C& c, D& d, E& e, F& f) const{    return BaseT::eval(        tuple<A&, B&, C&, D&, E&, F&>        (a, b, c, d, e, f)    );}#if PHOENIX_LIMIT > 6//////////////////////////////////template <typename BaseT>template <    typename A, typename B, typename C, typename D, typename E,    typename F, typename G>inline typename actor_result<BaseT,    tuple<A&, B&, C&, D&, E&, F&, G&>>::typeactor<BaseT>::operator()(    A& a, B& b, C& c, D& d, E& e, F& f, G& g) const{    return BaseT::eval(        tuple<A&, B&, C&, D&, E&, F&, G&>        (a, b, c, d, e, f, g)    );}//////////////////////////////////template <typename BaseT>template <    typename A, typename B, typename C, typename D, typename E,    typename F, typename G, typename H>inline typename actor_result<BaseT,    tuple<A&, B&, C&, D&, E&, F&, G&, H&>>::typeactor<BaseT>::operator()(    A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h) const{    return BaseT::eval(        tuple<A&, B&, C&, D&, E&, F&, G&, H&>        (a, b, c, d, e, f, g, h)    );}//////////////////////////////////template <typename BaseT>template <    typename A, typename B, typename C, typename D, typename E,    typename F, typename G, typename H, typename I>inline typename actor_result<BaseT,    tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&>>::typeactor<BaseT>::operator()(    A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i) const{    return BaseT::eval(        tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&>        (a, b, c, d, e, f, g, h, i)    );}#if PHOENIX_LIMIT > 9//////////////////////////////////template <typename BaseT>template <    typename A, typename B, typename C, typename D, typename E,    typename F, typename G, typename H, typename I, typename J>inline typename actor_result<BaseT,    tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&>>::typeactor<BaseT>::operator()(    A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j) const{    return BaseT::eval(        tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&>        (a, b, c, d, e, f, g, h, i, j)    );}//////////////////////////////////template <typename BaseT>template <    typename A, typename B, typename C, typename D, typename E,    typename F, typename G, typename H, typename I, typename J,    typename K>inline typename actor_result<BaseT,    tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&>>::typeactor<BaseT>::operator()(    A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j,    K& k) const{    return BaseT::eval(        tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&>        (a, b, c, d, e, f, g, h, i, j, k)    );}//////////////////////////////////template <typename BaseT>template <    typename A, typename B, typename C, typename D, typename E,    typename F, typename G, typename H, typename I, typename J,    typename K, typename L>inline typename actor_result<BaseT,    tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&>>::typeactor<BaseT>::operator()(    A& a, B& b, C& c, D& d, E& e, F& f, G& g, H& h, I& i, J& j,    K& k, L& l) const{    return BaseT::eval(        tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&>        (a, b, c, d, e, f, g, h, i, j, k, l)    );}#if PHOENIX_LIMIT > 12//////////////////////////////////template <typename BaseT>template <    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>inline typename actor_result<BaseT,    tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&, M&>>::typeactor<BaseT>::operator()(    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) const{    return BaseT::eval(        tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&, M&>        (a, b, c, d, e, f, g, h, i, j, k, l, m)    );}//////////////////////////////////template <typename BaseT>template <    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, typename N>inline typename actor_result<BaseT,    tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&, M&, N&>>::typeactor<BaseT>::operator()(    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, N& n) const{    return BaseT::eval(        tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&, M&, N&>        (a, b, c, d, e, f, g, h, i, j, k, l, m, n)    );}//////////////////////////////////template <typename BaseT>template <    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, typename N, typename O>inline typename actor_result<BaseT,    tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&, M&, N&, O&>>::typeactor<BaseT>::operator()(    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, N& n, O& o) const{    return BaseT::eval(        tuple<A&, B&, C&, D&, E&, F&, G&, H&, I&, J&, K&, L&, M&, N&, O&>        (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)    );}#endif#endif#endif#endif//////////////////////////////////template <typename BaseT>template <typename TupleT>typename actor_result<BaseT, unpack_tuple<TupleT> >::typeactor<BaseT>::operator()(unpack_tuple<TupleT> const &t) const{    return BaseT::eval(t);}///////////////////////////////////////////////////////////////////////////////}   //  namespace phoenix#endif

⌨️ 快捷键说明

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