...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 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; };
impl
public member functionsresult_type operator()(typename impl::expr_param expr, typename impl::state_param state, typename impl::data_param data) const;
Requires: |
|
Returns: |
result_type::make( G0()(proto::child_c<0>(expr), state, data), ... GN()(proto::child_c<N>(expr), state, data) )
|