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 + -
显示快捷键?