123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518 |
- <?xml version="1.0" encoding="utf-8"?>
- <!--
- Copyright 2012 Eric Niebler
- Distributed under the Boost
- Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- -->
- <header name="boost/proto/repeat.hpp">
- <para>
- Contains macros to ease the generation of repetitious code constructs.
- </para>
- <macro name="BOOST_PROTO_REPEAT" kind="functionlike">
- <macro-parameter name="MACRO"/>
- <purpose>Repeatedly invoke the specified macro.</purpose>
- <description>
- <para>
- <computeroutput>BOOST_PROTO_REPEAT()</computeroutput> is used to generate the kind of repetitive
- code that is typical of EDSLs built with Proto.
- <computeroutput>BOOST_PROTO_REPEAT(<replaceable>MACRO</replaceable>)</computeroutput>
- is equivalent to:
- </para>
- <para>
- <programlisting><replaceable>MACRO</replaceable>(1, <macroname>BOOST_PROTO_typename_A</macroname>, <macroname>BOOST_PROTO_A_const_ref</macroname>, <macroname>BOOST_PROTO_A_const_ref_a</macroname>, <macroname>BOOST_PROTO_ref_a</macroname>)
- <replaceable>MACRO</replaceable>(2, <macroname>BOOST_PROTO_typename_A</macroname>, <macroname>BOOST_PROTO_A_const_ref</macroname>, <macroname>BOOST_PROTO_A_const_ref_a</macroname>, <macroname>BOOST_PROTO_ref_a</macroname>)
- ...
- <replaceable>MACRO</replaceable>(<macroname>BOOST_PROTO_MAX_ARITY</macroname>, <macroname>BOOST_PROTO_typename_A</macroname>, <macroname>BOOST_PROTO_A_const_ref</macroname>, <macroname>BOOST_PROTO_A_const_ref_a</macroname>, <macroname>BOOST_PROTO_ref_a</macroname>)</programlisting>
- </para>
- <para>
- <emphasis role="bold">Example:</emphasis>
- </para>
- <para>
- See <computeroutput><macroname>BOOST_PROTO_REPEAT_FROM_TO</macroname>()</computeroutput>.
- </para>
- </description>
- </macro>
- <macro name="BOOST_PROTO_REPEAT_FROM_TO" kind="functionlike">
- <macro-parameter name="FROM"/>
- <macro-parameter name="TO"/>
- <macro-parameter name="MACRO"/>
- <purpose>Repeatedly invoke the specified macro.</purpose>
- <description>
- <para>
- <computeroutput>BOOST_PROTO_REPEAT_FROM_TO()</computeroutput> is used to generate the kind of repetitive
- code that is typical of EDSLs built with Proto.
- <computeroutput>BOOST_PROTO_REPEAT_FROM_TO(<replaceable>FROM</replaceable>, <replaceable>TO</replaceable>, <replaceable>MACRO</replaceable>)</computeroutput>
- is equivalent to:
- </para>
- <para>
- <programlisting><replaceable>MACRO</replaceable>(<replaceable>FROM</replaceable>, <macroname>BOOST_PROTO_typename_A</macroname>, <macroname>BOOST_PROTO_A_const_ref</macroname>, <macroname>BOOST_PROTO_A_const_ref_a</macroname>, <macroname>BOOST_PROTO_ref_a</macroname>)
- <replaceable>MACRO</replaceable>(<replaceable>FROM+1</replaceable>, <macroname>BOOST_PROTO_typename_A</macroname>, <macroname>BOOST_PROTO_A_const_ref</macroname>, <macroname>BOOST_PROTO_A_const_ref_a</macroname>, <macroname>BOOST_PROTO_ref_a</macroname>)
- ...
- <replaceable>MACRO</replaceable>(<replaceable>TO-1</replaceable>, <macroname>BOOST_PROTO_typename_A</macroname>, <macroname>BOOST_PROTO_A_const_ref</macroname>, <macroname>BOOST_PROTO_A_const_ref_a</macroname>, <macroname>BOOST_PROTO_ref_a</macroname>)</programlisting>
- </para>
- <para>
- <emphasis role="bold">Example:</emphasis>
- </para>
- <para>
- <programlisting>// Generate BOOST_PROTO_MAX_ARITY-1 overloads of the
- // following construct() function template.
- #define M0(N, typename_A, A_const_ref, A_const_ref_a, ref_a) \
- template<typename T, typename_A(N)> \
- typename <classname alt="boost::proto::result_of::make_expr">proto::result_of::make_expr</classname>< \
- <classname alt="boost::proto::tag::function">proto::tag::function</classname> \
- , construct_helper<T> \
- , A_const_ref(N) \
- >::type const \
- construct(A_const_ref_a(N)) \
- { \
- return <functionname alt="boost::proto::make_expr">proto::make_expr</functionname>< \
- <classname alt="boost::proto::tag::function">proto::tag::function</classname> \
- >( \
- construct_helper<T>() \
- , ref_a(N) \
- ); \
- }
- BOOST_PROTO_REPEAT_FROM_TO(1, BOOST_PROTO_MAX_ARITY, M0)
- #undef M0</programlisting>
- </para>
- <para>
- The above invocation of <computeroutput>BOOST_PROTO_REPEAT_FROM_TO()</computeroutput>
- will generate the following code:
- </para>
- <para>
- <programlisting>template<typename T, typename A0>
- typename <classname alt="boost::proto::result_of::make_expr">proto::result_of::make_expr</classname><
- <classname alt="boost::proto::tag::function">proto::tag::function</classname>
- , construct_helper<T>
- , A0 const &
- >::type const
- construct(A0 const & a0)
- {
- return <functionname alt="boost::proto::make_expr">proto::make_expr</functionname><
- <classname alt="boost::proto::tag::function">proto::tag::function</classname>
- >(
- construct_helper<T>()
- , boost::ref(a0)
- );
- }
- template<typename T, typename A0, typename A1>
- typename <classname alt="boost::proto::result_of::make_expr">proto::result_of::make_expr</classname><
- <classname alt="boost::proto::tag::function">proto::tag::function</classname>
- , construct_helper<T>
- , A0 const &
- , A1 const &
- >::type const
- construct(A0 const & a0, A1 const & a1)
- {
- return <functionname alt="boost::proto::make_expr">proto::make_expr</functionname><
- <classname alt="boost::proto::tag::function">proto::tag::function</classname>
- >(
- construct_helper<T>()
- , boost::ref(a0)
- , boost::ref(a1)
- );
- }
- // ... and so on, up to BOOST_PROTO_MAX_ARITY-1 arguments ...</programlisting>
- </para>
- </description>
- </macro>
- <macro name="BOOST_PROTO_REPEAT_EX" kind="functionlike">
- <macro-parameter name="MACRO"/>
- <macro-parameter name="typename_A"/>
- <macro-parameter name="A"/>
- <macro-parameter name="A_a"/>
- <macro-parameter name="a"/>
- <purpose>Repeatedly invoke the specified macro.</purpose>
- <description>
- <para>
- <computeroutput>BOOST_PROTO_REPEAT_EX()</computeroutput> is used to generate the kind of repetitive
- code that is typical of EDSLs built with Proto.
- <computeroutput>BOOST_PROTO_REPEAT_EX(<replaceable>MACRO</replaceable>, <replaceable>typename_A</replaceable>, <replaceable>A</replaceable>, <replaceable>A_a</replaceable>, <replaceable>a</replaceable>)</computeroutput>
- is equivalent to:
- </para>
- <para>
- <programlisting><replaceable>MACRO</replaceable>(1, typename_A, A, A_a, a)
- <replaceable>MACRO</replaceable>(2, typename_A, A, A_a, a)
- ...
- <replaceable>MACRO</replaceable>(<macroname>BOOST_PROTO_MAX_ARITY</macroname>, typename_A, A, A_a, a)</programlisting>
- </para>
- <para>
- <emphasis role="bold">Example:</emphasis>
- </para>
- <para>
- See <computeroutput><macroname>BOOST_PROTO_REPEAT_FROM_TO</macroname>()</computeroutput>.
- </para>
- </description>
- </macro>
- <macro name="BOOST_PROTO_REPEAT_FROM_TO_EX" kind="functionlike">
- <macro-parameter name="FROM"/>
- <macro-parameter name="TO"/>
- <macro-parameter name="MACRO"/>
- <macro-parameter name="typename_A"/>
- <macro-parameter name="A"/>
- <macro-parameter name="A_a"/>
- <macro-parameter name="a"/>
- <purpose>Repeatedly invoke the specified macro.</purpose>
- <description>
- <para>
- <computeroutput>BOOST_PROTO_REPEAT_FROM_TO_EX()</computeroutput> is used to generate the kind of repetitive
- code that is typical of EDSLs built with Proto.
- <computeroutput>BOOST_PROTO_REPEAT_FROM_TO_EX(<replaceable>FROM</replaceable>, <replaceable>TO</replaceable>, <replaceable>MACRO</replaceable>, <replaceable>typename_A</replaceable>, <replaceable>A</replaceable>, <replaceable>A_a</replaceable>, <replaceable>a</replaceable>)</computeroutput>
- is equivalent to:
- </para>
- <para>
- <programlisting><replaceable>MACRO</replaceable>(<replaceable>FROM</replaceable>, typename_A, A, A_a, a)
- <replaceable>MACRO</replaceable>(<replaceable>FROM+1</replaceable>, typename_A, A, A_a, a)
- ...
- <replaceable>MACRO</replaceable>(<replaceable>TO-1</replaceable>, typename_A, A, A_a, a)</programlisting>
- </para>
- <para>
- <emphasis role="bold">Example:</emphasis>
- </para>
- <para>
- See <computeroutput><macroname>BOOST_PROTO_REPEAT_FROM_TO</macroname>()</computeroutput>.
- </para>
- </description>
- </macro>
- <macro name="BOOST_PROTO_LOCAL_ITERATE" kind="functionlike">
- <purpose>Vertical repetition of a user-supplied macro.</purpose>
- <description>
- <para>
- <computeroutput>BOOST_PROTO_LOCAL_ITERATE()</computeroutput> is used generate the kind of repetitive code that is typical
- of EDSLs built with Proto. This macro causes the user-defined macro <computeroutput>BOOST_PROTO_LOCAL_MACRO()</computeroutput> to
- be expanded with values in the range specified by <computeroutput>BOOST_PROTO_LOCAL_LIMITS</computeroutput>.
- </para>
- <para>
- <emphasis role="bold">Usage:</emphasis>
- </para>
- <para>
- <programlisting>#include BOOST_PROTO_LOCAL_ITERATE()</programlisting>
- </para>
- <para>
- <emphasis role="bold">Example:</emphasis>
- </para>
- <para>
- <programlisting>// Generate BOOST_PROTO_MAX_ARITY-1 overloads of the
- // following construct() function template.
- #define BOOST_PROTO_LOCAL_MACRO(N, typename_A, A_const_ref, A_const_ref_a, ref_a)\
- template<typename T, typename_A(N)> \
- typename <classname alt="boost::proto::result_of::make_expr">proto::result_of::make_expr</classname>< \
- <classname alt="boost::proto::tag::function">proto::tag::function</classname> \
- , construct_helper<T> \
- , A_const_ref(N) \
- >::type const \
- construct(A_const_ref_a(N)) \
- { \
- return <functionname alt="boost::proto::make_expr">proto::make_expr</functionname>< \
- <classname alt="boost::proto::tag::function">proto::tag::function</classname> \
- >( \
- construct_helper<T>() \
- , ref_a(N) \
- ); \
- }
- #define BOOST_PROTO_LOCAL_LIMITS (1, BOOST_PP_DEC(BOOST_PROTO_MAX_ARITY))
- #include BOOST_PROTO_LOCAL_ITERATE()</programlisting>
- </para>
- <para>
- The above inclusion of <computeroutput>BOOST_PROTO_LOCAL_ITERATE()</computeroutput>
- will generate the following code:
- </para>
- <para>
- <programlisting>template<typename T, typename A0>
- typename <classname alt="boost::proto::result_of::make_expr">proto::result_of::make_expr</classname><
- <classname alt="boost::proto::tag::function">proto::tag::function</classname>
- , construct_helper<T>
- , A0 const &
- >::type const
- construct(A0 const & a0)
- {
- return <functionname alt="boost::proto::make_expr">proto::make_expr</functionname><
- <classname alt="boost::proto::tag::function">proto::tag::function</classname>
- >(
- construct_helper<T>()
- , boost::ref(a0)
- );
- }
- template<typename T, typename A0, typename A1>
- typename <classname alt="boost::proto::result_of::make_expr">proto::result_of::make_expr</classname><
- <classname alt="boost::proto::tag::function">proto::tag::function</classname>
- , construct_helper<T>
- , A0 const &
- , A1 const &
- >::type const
- construct(A0 const & a0, A1 const & a1)
- {
- return <functionname alt="boost::proto::make_expr">proto::make_expr</functionname><
- <classname alt="boost::proto::tag::function">proto::tag::function</classname>
- >(
- construct_helper<T>()
- , boost::ref(a0)
- , boost::ref(a1)
- );
- }
- // ... and so on, up to BOOST_PROTO_MAX_ARITY-1 arguments ...</programlisting>
- </para>
- <para>
- If <computeroutput>BOOST_PROTO_LOCAL_LIMITS</computeroutput> is not defined by the user, it defaults
- to <computeroutput>(1, BOOST_PROTO_MAX_ARITY)</computeroutput>.
- </para>
- <para>
- At each iteration, <computeroutput>BOOST_PROTO_LOCAL_MACRO()</computeroutput> is invoked with the current
- iteration number and the following 4 macro parameters:
- <itemizedlist>
- <listitem><computeroutput>BOOST_PROTO_LOCAL_typename_A</computeroutput></listitem>
- <listitem><computeroutput>BOOST_PROTO_LOCAL_A</computeroutput></listitem>
- <listitem><computeroutput>BOOST_PROTO_LOCAL_A_a</computeroutput></listitem>
- <listitem><computeroutput>BOOST_PROTO_LOCAL_a</computeroutput></listitem>
- </itemizedlist>
- If these macros are not defined by the user, they default respectively to:
- <itemizedlist>
- <listitem><computeroutput><macroname>BOOST_PROTO_typename_A</macroname></computeroutput></listitem>
- <listitem><computeroutput><macroname>BOOST_PROTO_A_const_ref</macroname></computeroutput></listitem>
- <listitem><computeroutput><macroname>BOOST_PROTO_A_const_ref_a</macroname></computeroutput></listitem>
- <listitem><computeroutput><macroname>BOOST_PROTO_ref_a</macroname></computeroutput></listitem>
- </itemizedlist>
- </para>
- <para>
- After including <computeroutput>BOOST_PROTO_LOCAL_ITERATE()</computeroutput>, the
- following macros are automatically undefined:
- <itemizedlist>
- <listitem><computeroutput>BOOST_PROTO_LOCAL_MACRO</computeroutput></listitem>
- <listitem><computeroutput>BOOST_PROTO_LOCAL_LIMITS</computeroutput></listitem>
- <listitem><computeroutput>BOOST_PROTO_LOCAL_typename_A</computeroutput></listitem>
- <listitem><computeroutput>BOOST_PROTO_LOCAL_A</computeroutput></listitem>
- <listitem><computeroutput>BOOST_PROTO_LOCAL_A_a</computeroutput></listitem>
- <listitem><computeroutput>BOOST_PROTO_LOCAL_a</computeroutput></listitem>
- </itemizedlist>
- </para>
- </description>
- </macro>
- <macro name="BOOST_PROTO_typename_A" kind="functionlike">
- <macro-parameter name="N"/>
- <purpose>
- Generates sequences like
- <computeroutput>
- typename A<subscript>0</subscript>,
- typename A<subscript>1</subscript>, …
- typename A<subscript>N-1</subscript>
- </computeroutput>.
- </purpose>
- <description>
- <para>
- Intended for use with the <computeroutput><macroname>BOOST_PROTO_REPEAT</macroname>()</computeroutput>
- and <computeroutput><macroname>BOOST_PROTO_LOCAL_ITERATE</macroname>()</computeroutput> macros.
- </para>
- <para>
- <computeroutput>BOOST_PROTO_typename_A(<replaceable>N</replaceable>)</computeroutput> generates sequences like:
- </para>
- <para>
- <programlisting>typename A<subscript>0</subscript>, typename A<subscript>1</subscript>, … typename A<subscript>N-1</subscript></programlisting>
- </para>
- </description>
- </macro>
- <macro name="BOOST_PROTO_A_const_ref" kind="functionlike">
- <macro-parameter name="N"/>
- <purpose>
- Generates sequences like
- <computeroutput>
- A<subscript>0</subscript> const &,
- A<subscript>1</subscript> const &, …
- A<subscript>N-1</subscript> const &
- </computeroutput>.
- </purpose>
- <description>
- <para>
- Intended for use with the <computeroutput><macroname>BOOST_PROTO_REPEAT</macroname>()</computeroutput>
- and <computeroutput><macroname>BOOST_PROTO_LOCAL_ITERATE</macroname>()</computeroutput> macros.
- </para>
- <para>
- <computeroutput>BOOST_PROTO_A_const_ref(<replaceable>N</replaceable>)</computeroutput> generates sequences like:
- </para>
- <para>
- <programlisting>A<subscript>0</subscript> const &, A<subscript>1</subscript> const &, … A<subscript>N-1</subscript> const &</programlisting>
- </para>
- </description>
- </macro>
- <macro name="BOOST_PROTO_A_ref" kind="functionlike">
- <macro-parameter name="N"/>
- <purpose>
- Generates sequences like
- <computeroutput>
- A<subscript>0</subscript> &,
- A<subscript>1</subscript> &, …
- A<subscript>N-1</subscript> &
- </computeroutput>.
- </purpose>
- <description>
- <para>
- Intended for use with the <computeroutput><macroname>BOOST_PROTO_REPEAT</macroname>()</computeroutput>
- and <computeroutput><macroname>BOOST_PROTO_LOCAL_ITERATE</macroname>()</computeroutput> macros.
- </para>
- <para>
- <computeroutput>BOOST_PROTO_A_ref(<replaceable>N</replaceable>)</computeroutput> generates sequences like:
- </para>
- <para>
- <programlisting>A<subscript>0</subscript> &, A<subscript>1</subscript> &, … A<subscript>N-1</subscript> &</programlisting>
- </para>
- </description>
- </macro>
- <macro name="BOOST_PROTO_A" kind="functionlike">
- <macro-parameter name="N"/>
- <purpose>
- Generates sequences like
- <computeroutput>
- A<subscript>0</subscript>,
- A<subscript>1</subscript>, …
- A<subscript>N-1</subscript>
- </computeroutput>.
- </purpose>
- <description>
- <para>
- Intended for use with the <computeroutput><macroname>BOOST_PROTO_REPEAT</macroname>()</computeroutput>
- and <computeroutput><macroname>BOOST_PROTO_LOCAL_ITERATE</macroname>()</computeroutput> macros.
- </para>
- <para>
- <computeroutput>BOOST_PROTO_A(<replaceable>N</replaceable>)</computeroutput> generates sequences like:
- </para>
- <para>
- <programlisting>A<subscript>0</subscript>, A<subscript>1</subscript>, … A<subscript>N-1</subscript></programlisting>
- </para>
- </description>
- </macro>
- <macro name="BOOST_PROTO_A_const" kind="functionlike">
- <macro-parameter name="N"/>
- <purpose>
- Generates sequences like
- <computeroutput>
- A<subscript>0</subscript> const,
- A<subscript>1</subscript> const, …
- A<subscript>N-1</subscript> const
- </computeroutput>.
- </purpose>
- <description>
- <para>
- Intended for use with the <computeroutput><macroname>BOOST_PROTO_REPEAT</macroname>()</computeroutput>
- and <computeroutput><macroname>BOOST_PROTO_LOCAL_ITERATE</macroname>()</computeroutput> macros.
- </para>
- <para>
- <computeroutput>BOOST_PROTO_A_const(<replaceable>N</replaceable>)</computeroutput> generates sequences like:
- </para>
- <para>
- <programlisting>A<subscript>0</subscript> const, A<subscript>1</subscript> const, … A<subscript>N-1</subscript> const</programlisting>
- </para>
- </description>
- </macro>
- <macro name="BOOST_PROTO_A_const_ref_a" kind="functionlike">
- <macro-parameter name="N"/>
- <purpose>
- Generates sequences like
- <computeroutput>
- A<subscript>0</subscript> const & a<subscript>0</subscript>,
- A<subscript>1</subscript> const & a<subscript>1</subscript>, …
- A<subscript>N-1</subscript> const & a<subscript>N-1</subscript>
- </computeroutput>.
- </purpose>
- <description>
- <para>
- Intended for use with the <computeroutput><macroname>BOOST_PROTO_REPEAT</macroname>()</computeroutput>
- and <computeroutput><macroname>BOOST_PROTO_LOCAL_ITERATE</macroname>()</computeroutput> macros.
- </para>
- <para>
- <computeroutput>BOOST_PROTO_A_const_ref_a(<replaceable>N</replaceable>)</computeroutput> generates sequences like:
- </para>
- <para>
- <programlisting>A<subscript>0</subscript> const & a<subscript>0</subscript>, A<subscript>1</subscript> const & a<subscript>1</subscript>, … A<subscript>N-1</subscript> const & a<subscript>N-1</subscript></programlisting>
- </para>
- </description>
- </macro>
- <macro name="BOOST_PROTO_A_ref_a" kind="functionlike">
- <macro-parameter name="N"/>
- <purpose>
- Generates sequences like
- <computeroutput>
- A<subscript>0</subscript> & a<subscript>0</subscript>,
- A<subscript>1</subscript> & a<subscript>1</subscript>, …
- A<subscript>N-1</subscript> & a<subscript>N-1</subscript>
- </computeroutput>.
- </purpose>
- <description>
- <para>
- Intended for use with the <computeroutput><macroname>BOOST_PROTO_REPEAT</macroname>()</computeroutput>
- and <computeroutput><macroname>BOOST_PROTO_LOCAL_ITERATE</macroname>()</computeroutput> macros.
- </para>
- <para>
- <computeroutput>BOOST_PROTO_A_ref_a(<replaceable>N</replaceable>)</computeroutput> generates sequences like:
- </para>
- <para>
- <programlisting>A<subscript>0</subscript> & a<subscript>0</subscript>, A<subscript>1</subscript> & a<subscript>1</subscript>, … A<subscript>N-1</subscript> & a<subscript>N-1</subscript></programlisting>
- </para>
- </description>
- </macro>
- <macro name="BOOST_PROTO_ref_a" kind="functionlike">
- <macro-parameter name="N"/>
- <purpose>
- Generates sequences like
- <computeroutput>
- boost::ref(a<subscript>0</subscript>),
- boost::ref(a<subscript>1</subscript>), …
- boost::ref(a<subscript>N-1</subscript>)
- </computeroutput>.
- </purpose>
- <description>
- <para>
- Intended for use with the <computeroutput><macroname>BOOST_PROTO_REPEAT</macroname>()</computeroutput>
- and <computeroutput><macroname>BOOST_PROTO_LOCAL_ITERATE</macroname>()</computeroutput> macros.
- </para>
- <para>
- <computeroutput>BOOST_PROTO_ref_a(<replaceable>N</replaceable>)</computeroutput> generates sequences like:
- </para>
- <para>
- <programlisting>boost::ref(a<subscript>0</subscript>), boost::ref(a<subscript>1</subscript>), … boost::ref(a<subscript>N-1</subscript>)</programlisting>
- </para>
- </description>
- </macro>
- <macro name="BOOST_PROTO_a" kind="functionlike">
- <macro-parameter name="N"/>
- <purpose>
- Generates sequences like
- <computeroutput>
- a<subscript>0</subscript>,
- a<subscript>1</subscript>, …
- a<subscript>N-1</subscript>
- </computeroutput>.
- </purpose>
- <description>
- <para>
- Intended for use with the <computeroutput><macroname>BOOST_PROTO_REPEAT</macroname>()</computeroutput>
- and <computeroutput><macroname>BOOST_PROTO_LOCAL_ITERATE</macroname>()</computeroutput> macros.
- </para>
- <para>
- <computeroutput>BOOST_PROTO_a(<replaceable>N</replaceable>)</computeroutput> generates sequences like:
- </para>
- <para>
- <programlisting>a<subscript>0</subscript>, a<subscript>1</subscript>, … a<subscript>N-1</subscript></programlisting>
- </para>
- </description>
- </macro>
- </header>
|