...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
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
public member functionsresult_type operator()(typename impl::expr_param expr, typename impl::state_param state, typename impl::data_param data) const;
Requires: |
|
Returns: |
D()(expr_type::make( G0()(proto::child_c<0>(expr), state, data), ... GN()(proto::child_c<N>(expr), state, data) ))
|