long Args::arity
Simplified representation of a node in an expression tree.

`proto::basic_expr<>` is a node in an expression template tree. It is a container for its child sub-trees. It also serves as the terminal nodes of the tree.

`Tag` is type that represents the operation encoded by this expression. It is typically one of the structs in the `boost::proto::tag` namespace, but it doesn't have to be. If `Arity` is 0 then this `expr<>` type represents a leaf in the expression tree.

`Args` is a list of types representing the children of this expression. It is an instantiation of one of ``proto::list1<>``, ``proto::list2<>``, etc. The child types must all themselves be either `proto::expr<>` or `proto::basic_expr<>&` (or extensions thereof via ``proto::extends<>`` or `BOOST_PROTO_EXTENDS()`), unless `Arity` is 0, in which case `Args` must be `proto::term<T>`, where `T` can be any type.

`proto::basic_expr<>` is a valid Fusion random-access sequence, where the elements of the sequence are the child expressions.

Tag
Args
mpl::long_< Arity >
`proto::basic_default_domain`
basic_expr
basic_expr
basic_expr
typename Args::childN For each N in [0,max(Arity,1)).
basic_expr const `A const &`

The number of supplied arguments must be `max(Arity,1)`.

A new `basic_expr` object initialized with the specified arguments.

basic_expr &

`*this`

basic_expr const &

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

long Args::arity
Representation of a node in an expression tree.

`proto::expr<>` is a node in an expression template tree. It is a container for its child sub-trees. It also serves as the terminal nodes of the tree.

`Tag` is type that represents the operation encoded by this expression. It is typically one of the structs in the `boost::proto::tag` namespace, but it doesn't have to be. If `Arity` is 0 then this `expr<>` type represents a leaf in the expression tree.

`Args` is a list of types representing the children of this expression. It is an instantiation of one of ``proto::list1<>``, ``proto::list2<>``, etc. The child types must all themselves be either `proto::expr<>` or `proto::basic_expr<>&` (or extensions thereof via ``proto::extends<>`` or `BOOST_PROTO_EXTENDS()`), unless `Arity` is 0, in which case `Args` must be `proto::term<T>`, where `T` can be any type.

`proto::expr<>` is a valid Fusion random-access sequence, where the elements of the sequence are the child expressions.

Tag
Args
mpl::long_< Arity >
`proto::default_domain`
`proto::basic_expr`< Tag, Args, Arity >
expr
expr
typename Args::childN For each N in [0,max(Arity,1)).

Encodes the return type of ``proto::expr<>`::operator()`. Makes ``proto::expr<>`` a TR1-style function object type usable with `boost::result_of<>`

unspecified
expr const `A const &`

The number of supplied arguments must be `max(Arity,1)`.

A new `expr` object initialized with the specified arguments.

expr &

`*this`

expr const &

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

unspecified `A &`

Lazy assignment expression

A new expression node representing the assignment operation.

unspecified `A const &`

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

unspecified `A &`

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

unspecified `A const &`

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

unspecified `A &`

Lazy subscript expression

A new expression node representing the subscript operation.

unspecified `A const &`

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

unspecified `A &`

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

unspecified `A const &`

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

unspecified `A const &`

Lazy function call

A new expression node representing the function call operation.

unspecified `A const &`

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

proto_childN For each N in [0,max(Arity,1)).
const long `= Arity;`
Lets you inherit the interface of an expression while hiding from Proto the fact that the type is a Proto expression.
Expr
Expr const &

For an expression type `E`, ``proto::is_expr`<E>::value` is `true`, but ``proto::is_expr`<proto::unexpr<E> >::value` is `false`.