|  | Home | Libraries | People | FAQ | More | 
boost::proto::make_expr — Construct an expression of the requested tag type with a domain and with the specified arguments as children.
// In header: <boost/proto/make_expr.hpp> template<typename Tag, typename... A> typename proto::result_of::make_expr<Tag, A const...>::type const make_expr(A const &... a); template<typename Tag, typename Domain, typename... A> typename proto::result_of::make_expr<Tag, Domain, A const...>::type const make_expr(A const &... a);
            This function template may be invoked either with or without specifying a
            Domain template parameter. If no domain is specified, the domain
            is deduced by examining domains of the given arguments. See
            proto::deduce_domain
            Let WRAP(x)
                  If x is a boost::reference_wrapper<>,
                  WRAP(x)proto::as_child<Domain>(x.get())
                  Otherwise, WRAP(x)proto::as_expr<Domain>(x)
            If proto::wants_basic_expr<typename Domain::proto_generator>::valueEproto::basic_exprEproto::expr
            Let MAKE(Tag, b...)E<Tag,
            proto::listN<decltype(b)...> >::make(b...)
            If Tag is
            proto::tag::terminalWRAP(a0)
            Otherwise, return
            Domain()(.
          MAKE(Tag, WRAP(a)...))