A PrimitiveTransform which computes a type by evaluating any nested transforms and then constructs an object of that type. More...
#include <make.hpp>


Classes | |
| struct | impl |
Public Types | |
| typedef make< Object > | transform_type |
Public Member Functions | |
| BOOST_PROTO_CALLABLE () typedef X proto_is_transform_ | |
| BOOST_FORCEINLINE boost::proto::detail::apply_transform < transform_type(Expr const &)> ::result_type | operator() (Expr &&e) const |
| BOOST_FORCEINLINE boost::proto::detail::apply_transform < transform_type(Expr const &, State const &)> ::result_type | operator() (Expr &&e, State &&s) const |
| BOOST_FORCEINLINE boost::proto::detail::apply_transform < transform_type(Expr const &, State const &, Data const &)> ::result_type | operator() (Expr &&e, State &&s, Data &&d) const |
A PrimitiveTransform which computes a type by evaluating any nested transforms and then constructs an object of that type.
The make<> transform checks to see if Object is a template. If it is, the template type is disassembled to find nested transforms. Proto considers the following types to represent transforms:
proto::is_callable< type >value is true boost::result_of<make<T<X0,X1,...> >(Expr, State, Data)>::type is evaluated as follows. For each X in X0,X1,..., do:
X is a template like U<Y0,Y1,...>, then let X' be boost::result_of<make<U<Y0,Y1,...> >(Expr, State, Data)>::type (which evaluates this procedure recursively). Note whether any substitutions took place during this operation. X is a transform, then let X' be boost::result_of<when<_, X>(Expr, State, Data)>::type. Note that a substitution took place. X' be X, and note that no substitution took place. T<X0',X1',...> has a nested ::type typedef, the result type is T<X0',X1',...>::type. T<X0',X1',...>.Note that when<> is implemented in terms of call<> and make<>, so the above procedure is evaluated recursively.
|
inherited |
|
inherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |