Boost  v1.57.0
doxygen for www.boost.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
boost::proto::call< Fun(A0, A1)>::impl< Expr, State, Data > Struct Template Reference

Let x be when<_, A0>()(e, s, d) and X be the type of x. More...

#include <call.hpp>

Inheritance diagram for boost::proto::call< Fun(A0, A1)>::impl< Expr, State, Data >:
Collaboration diagram for boost::proto::call< Fun(A0, A1)>::impl< Expr, State, Data >:

Detailed Description

template<typename Fun, typename A0, typename A1>
template<typename Expr, typename State, typename Data>
struct boost::proto::call< Fun(A0, A1)>::impl< Expr, State, Data >

Let x be when<_, A0>()(e, s, d) and X be the type of x.

Let y be when<_, A1>()(e, s, d) and Y be the type of y. If Fun is a binary PolymorphicFunction object that accepts x and y, then type is a typedef for boost::result_of<Fun(X, Y)>::type. Otherwise, it is a typedef for boost::result_of<Fun(X, Y, Data)>::type. Either call the PolymorphicFunctionObject with 2 arguments: the result of applying the A0 transform, and the result of applying the A1 transform; or invoke the PrimitiveTransform with 3 arguments: the result of applying the A0 transform, the result of applying the A1 transform, and the data.

Let x be when<_, A0>()(e, s, d). Let y be when<_, A1>()(e, s, d). If Fun is a binary PolymorphicFunction object that accepts x and y, return Fun()(x, y). Otherwise, return Fun()(x, y, d).

Parameters
eThe current expression
sThe current state
dAn arbitrary data

The documentation for this struct was generated from the following file: