| Home | Libraries | People | FAQ | More

## Struct template make_expr

boost::proto::result_of::make_expr — Metafunction that computes the return type of the `proto::make_expr()` function, with a domain deduced from the domains of the children.

## Synopsis

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

    template<typename Tag, typename... A>
    struct make_expr {
      // types
      typedef domain-deduced-from-child-types D;
      typedef typename proto::result_of::make_expr<Tag, D, A...>::type type;
    };

## Description

Computes the return type of the `proto::make_expr()` function.

In this specialization, the domain is deduced from the domains of the child types. If `proto::is_domain<A0>::value` is `true`, then another specialization is selected.

### `make_expr` public types

1. typedef `domain-deduced-from-child-types` D;

   For each `x` in `[0,N)` (proceeding in order beginning with `x=0`), if `proto::domain_of<Ax>::type` is not `proto::default_domain`, then `D` is `proto::domain_of<Ax>::type`. Otherwise, `D` is `proto::default_domain`.