Boost C++ 库

...世界上最受推崇和设计精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu,《C++ 编码规范

结构体模板 impl - Boost C++ 函数库
PrevUpHomeNext

结构体模板 impl

boost::proto::pass_through::impl

提要

// In header: <boost/proto/transform/pass_through.hpp>


template<typename Expr, typename State, typename Data> 
struct impl :  proto::transform_impl<Expr, State, Data> {
  // types
  typedef typename proto::result_of::child_c<Grammar, N>::type       GN;           // For each N in [0,Expr arity), for exposition only
  typedef typename proto::result_of::child_c<Expr, N>::type          EN;           // For each N in [0,Expr arity), for exposition only
  typedef typename boost::result_of<GN(EN,State,Data)>::type         RN;           // For each N in [0,Expr arity), for exposition only
  typedef typename Expr::proto_tag                                   T;            // For exposition only
  typedef boost::is_same<Domain, deduce_domain>                      Deduce;       // For exposition only
  typedef typename Expr::proto_domain                                DD;           // For exposition only
  typedef typename mpl::if_<Deduce, DD, Domain>::type                D;            // For exposition only
  typedef typename D::proto_generator                                G;            // For exposition only
  typedef proto::listN<R0,...RN>                                     A;            // For exposition only
  typedef proto::expr<T, A>                                          E;            // For exposition only
  typedef proto::basic_expr<T, A>                                    BE;           // For exposition only
  typedef typename mpl::if_<proto::wants_basic_expr<G>, BE, E>::type expr_type;    // For exposition only
  typedef typename boost::result_of<D(expr_type)>::type              result_type;

  // public member functions
  result_type operator()(typename impl::expr_param, 
                         typename impl::state_param, 
                         typename impl::data_param) const;
};

描述

impl 公有成员函数

  1. result_type operator()(typename impl::expr_param expr, 
                           typename impl::state_param state, 
                           typename impl::data_param data) const;

    要求

    proto::matches<Expr, Grammar>::value true

    返回

    D()(expr_type::make(
      G0()(proto::child_c<0>(expr), state, data),
      ...
      GN()(proto::child_c<N>(expr), state, data)
    ))


PrevUpHomeNext