Contains definitions of the ``proto::term<>``, ``proto::list1<>``, ``proto::list2<>``, etc. class templates.

A type sequence, for use as the 2nd parameter to the ``proto::expr<>`` and ``proto::basic_expr<>`` class templates.

A type sequence with one element, for use as the 2nd parameter to the ``proto::expr<>`` and ``proto::basic_expr<>`` class templates. The sequence element represents the value of a terminal.

= 0;
const long
T
proto::list1<>
, `proto::list2<>`, etc., are type sequences for use as the 2nd parameter to the ``proto::expr<>`` or ``proto::basic_expr<>`` class templates.

Type sequences, for use as the 2nd parameter to the ``proto::expr<>`` or ``proto::basic_expr<>`` class template. The types in the sequence correspond to the children of a node in an expression tree. There is no type literally named "`listN`"; rather, there is a set of types named `proto::list1<>`, `proto::list2<>`, etc.

= N;
const long
For each M in [0,N)
ArgM