| Home | Libraries | People | FAQ | More

## Struct template make_expr

boost::proto::functional::make_expr — A PolymorphicFunctionObject equivalent to the `proto::make_expr()` function.

## Synopsis

    // In header: <boost/proto/make_expr.hpp>

    template<typename Tag, typename Domain = proto::deduce_domain>
    struct make_expr :  proto::callable {
      // member classes/structs/unions
      template<typename This, typename... A>
      struct result<This(A...)> :
        proto::result_of::make_expr< Tag, Domain, A... > {
      };

      // public member functions
      template<typename... A>
        typename proto::result_of::make_expr< Tag, Domain, A const... >::type const
        operator()(A const &...) const;
    };

## Description

In all cases, `proto::functional::make_expr<Tag, Domain>()(a...)` is equivalent to `proto::make_expr<Tag, Domain>(a...)`.

`proto::functional::make_expr<Tag>()(a...)` is equivalent to `proto::make_expr<Tag>(a...)`.

### `make_expr` public member functions

1.     template<typename... A>
         typename proto::result_of::make_expr< Tag, Domain, A const... >::type const
         operator()(A const &... a) const;

   Construct an expression node with tag type `Tag` and in the domain `Domain`.

   Returns: | `proto::make_expr<Tag, Domain>(a...)`