Contains the `proto::eval()` expression evaluator.

A PolymorphicFunctionObject type for evaluating a given Proto expression with a given context.
`proto::callable`
This(Expr, Context)
`proto::result_of::eval`< typename boost::remove_reference< Expr >::type, typename boost::remove_reference< Context >::type >
typename `proto::result_of::eval`< Expr, Context >::type `Expr &

The Proto expression to evaluate.

` `Context &

The context in which the expression should be evaluated.

` Evaluate a given Proto expression with a given context.

`typename Context::template eval<Expr>()(expr, context)`

typename `proto::result_of::eval`< Expr, Context >::type `Expr &` `Context const &`

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

A metafunction for calculating the return type of `proto::eval()` given a certain `Expr` and `Context` types.
typename Context::template eval< Expr >::result_type
typename `proto::result_of::eval`< Expr, Context >::type `Expr &

The Proto expression to evaluate.

` `Context &

The context in which the expression should be evaluated.

`
typename `proto::result_of::eval`< Expr, Context >::type `Expr &` `Context const &`
Evaluate a given Proto expression with a given context.

`typename Context::template eval<Expr>()(expr, context)`