| Home | Libraries | People | FAQ | More

## Struct template impl

boost::proto::pass_through::impl

## Synopsis

    // 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 proto::expr<T, proto::listN<R0,...RN> >              result_type;

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

## Description

### `impl` public member functions

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

   Requires: | `proto::matches<Expr, Grammar>::value` is `true`.

   Returns:

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