<?xml version="1.0" encoding="utf-8"?>
<header name="boost/proto/args.hpp">
  <para>
    Contains definitions of the <computeroutput>
    <classname alt="boost::proto::term">proto::term&lt;&gt;</classname></computeroutput> and <computeroutput>
    <classname alt="boost::proto::listN">proto::list<replaceable>N</replaceable>&lt;&gt;</classname>
    </computeroutput> class templates.</para>

  <namespace name="boost">
    <namespace name="proto">

      <!-- proto::term<> -->
      <struct name="term">
        <template>
          <template-type-parameter name="Arg0"/>
        </template>
        <purpose>A type sequence, for use as the 2<superscript>nd</superscript> parameter to the <computeroutput>
          <classname alt="proto::expr">proto::expr&lt;&gt;</classname></computeroutput> class template.</purpose>
        <description>
          <para>
            A type sequence, for use as the 2<superscript>nd</superscript> parameter to the <computeroutput>
            <classname alt="proto::expr">proto::expr&lt;&gt;</classname></computeroutput> class template. The
            types in the sequence correspond to the children of a node in an expression tree.
          </para>
        </description>
        <data-member name="arity" specifiers="static">
          <purpose><computeroutput>= 0;</computeroutput></purpose>
          <type>const long</type>
        </data-member>
        <typedef name="child0">
          <type>Arg0</type>
        </typedef>
      </struct>

      <!-- proto::list1<>, proto::list2<> ... -->
      <struct name="listN">
        <template>
          <template-type-parameter name="Arg" pack="1"/>
        </template>
        <purpose>A type sequence, for use as the 2<superscript>nd</superscript> parameter to the <computeroutput>
          <classname alt="proto::expr">proto::expr&lt;&gt;</classname></computeroutput> class template.</purpose>
        <description>
          <para>
            A type sequence, for use as the 2<superscript>nd</superscript> parameter to the <computeroutput>
            <classname alt="proto::expr">proto::expr&lt;&gt;</classname></computeroutput> class template. The
            types in the sequence correspond to the children of a node in an expression tree.
          </para>
        </description>
        <data-member name="arity" specifiers="static">
          <purpose><computeroutput>= N;</computeroutput></purpose>
          <type>const long</type>
        </data-member>
        <typedef name="childM">
          <purpose>For each <replaceable>M</replaceable> in <replaceable>[0,N)</replaceable></purpose>
          <type>Arg<replaceable>M</replaceable></type>
        </typedef>
      </struct>

    </namespace>
  </namespace>
</header>
