![]() |
Home | Libraries | People | FAQ | More |
BOOST_PROTO_LOCAL_ITERATE — Vertical repetition of a user-supplied macro.
// In header: <boost/proto/repeat.hpp>
BOOST_PROTO_LOCAL_ITERATE()
BOOST_PROTO_LOCAL_ITERATE() is used generate the kind of repetitive code that is typical
of EDSLs built with Proto. This macro causes the user-defined macro BOOST_PROTO_LOCAL_MACRO() to
be expanded with values in the range specified by BOOST_PROTO_LOCAL_LIMITS.
Usage:
Example:
// Generate BOOST_PROTO_MAX_ARITY-1 overloads of the // following construct() function template. proto::result_of::make_expr< \ proto::tag::function \ , proto::make_expr< \ proto::tag::function \ >( \
The above inclusion of BOOST_PROTO_LOCAL_ITERATE()
will generate the following code:
proto::result_of::make_expr< proto::tag::function , proto::make_expr< proto::tag::function >( proto::result_of::make_expr< proto::tag::function , proto::make_expr< proto::tag::function >(
If BOOST_PROTO_LOCAL_LIMITS is not defined by the user, it defaults
to (1, BOOST_PROTO_MAX_ARITY).
At each iteration, BOOST_PROTO_LOCAL_MACRO() is invoked with the current
iteration number and the following 4 macro parameters:
BOOST_PROTO_LOCAL_typename_ABOOST_PROTO_LOCAL_ABOOST_PROTO_LOCAL_A_aBOOST_PROTO_LOCAL_aIf these macros are not defined by the user, they default respectively to:
After including BOOST_PROTO_LOCAL_ITERATE(), the
following macros are automatically undefined:
BOOST_PROTO_LOCAL_MACROBOOST_PROTO_LOCAL_LIMITSBOOST_PROTO_LOCAL_typename_ABOOST_PROTO_LOCAL_ABOOST_PROTO_LOCAL_A_aBOOST_PROTO_LOCAL_a