| Home | Libraries | People | FAQ | More

### Header <boost/proto/make_expr.hpp>

Definition of the `proto::make_expr()` and `proto::unpack_expr()` utilities for building Proto expression nodes from child nodes or from a Fusion sequence of child nodes, respectively.

    namespace boost {
      namespace proto {
        template<typename Tag, typename... A>
          typename proto::result_of::make_expr<Tag, A const...>::type const
          make_expr(A const &...);
        template<typename Tag, typename Domain, typename... A>
          typename proto::result_of::make_expr<Tag, Domain, A const...>::type const
          make_expr(A const &...);
        template<typename Tag, typename Sequence>
          typename proto::result_of::unpack_expr<Tag, Sequence const>::type const
          unpack_expr(Sequence const &);
        template<typename Tag, typename Domain, typename Sequence>
          typename proto::result_of::unpack_expr<Tag, Domain, Sequence const>::type const
          unpack_expr(Sequence const &);
        namespace functional {
          template<typename Tag, typename Domain = proto::deduce_domain>
            struct make_expr;
          template<typename Tag, typename Domain = proto::deduce_domain>
            struct unpack_expr;
        }
        namespace result_of {
          template<typename Tag, typename... A> struct make_expr;

          template<typename Tag, typename Domain, typename... A>
            struct make_expr<Tag, Domain, A...>;

          template<typename Tag, typename Sequence, typename Void = void>
            struct unpack_expr;

          template<typename Tag, typename Domain, typename Sequence>
            struct unpack_expr<Tag, Domain, Sequence>;
        }
      }
    }