<p>A <aclass="reference"href="./forward-sequence.html">Forward Sequence</a> is an MPL concept representing a compile-time sequence of
elements. Sequence elements are
types, and are accessible through <aclass="reference"href="./iterators.html">Iterators</a>. The <aclass="refentry reference"href="./begin.html"><ttclass="refentry literal"><spanclass="pre">begin</span></tt></a> and <aclass="refentry reference"href="./end.html"><ttclass="refentry literal"><spanclass="pre">end</span></tt></a> metafunctions
provide iterators delimiting the range of the sequence
elements. A sequence guarantees that its elements are arranged in a definite,
but possibly unspecified, order. Every MPL sequence is a <aclass="reference"href="./forward-sequence.html">Forward Sequence</a>.</p>
<p>For any <aclass="reference"href="./forward-sequence.html">Forward Sequence</a><ttclass="literal"><spanclass="pre">s</span></tt> the following expressions must be valid:</p>
<td>An iterator to the first element of the sequence; see <aclass="refentry reference"href="./begin.html"><ttclass="refentry literal"><spanclass="pre">begin</span></tt></a>.</td>
<td>A past-the-end iterator to the sequence; see <aclass="refentry reference"href="./end.html"><ttclass="refentry literal"><spanclass="pre">end</span></tt></a>.</td>
<td>The size of the sequence; see <aclass="refentry reference"href="./size.html"><ttclass="refentry literal"><spanclass="pre">size</span></tt></a>.</td>
<td>A boolean <aclass="reference"href="./integral-constant.html">Integral Constant</a><ttclass="literal"><spanclass="pre">c</span></tt> such that
<ttclass="literal"><spanclass="pre">c::value</span><spanclass="pre">==</span><spanclass="pre">true</span></tt> if and only if the sequence is empty; see <aclass="refentry reference"href="./empty.html"><ttclass="refentry literal"><spanclass="pre">empty</span></tt></a>.</td>
<td>The first element in the sequence; see <aclass="refentry reference"href="./front.html"><ttclass="refentry literal"><spanclass="pre">front</span></tt></a>.</td>
<p>For any <aclass="reference"href="./forward-sequence.html">Forward Sequence</a><ttclass="literal"><spanclass="pre">s</span></tt> the following invariants always hold:</p>
<ulclass="simple">
<li>[<ttclass="literal"><spanclass="pre"><ahref="./begin.html"class="identifier">begin</a><s>::type</span></tt>, <ttclass="literal"><spanclass="pre"><ahref="./end.html"class="identifier">end</a><s>::type</span></tt>) is always a valid range.</li>
<li>An algorithm that iterates through the range [<ttclass="literal"><spanclass="pre"><ahref="./begin.html"class="identifier">begin</a><s>::type</span></tt>, <ttclass="literal"><spanclass="pre"><ahref="./end.html"class="identifier">end</a><s>::type</span></tt>)
will pass through every element of <ttclass="literal"><spanclass="pre">s</span></tt> exactly once.</li>
<li><ttclass="literal"><spanclass="pre"><ahref="./begin.html"class="identifier">begin</a><s>::type</span></tt> is identical to <ttclass="literal"><spanclass="pre"><ahref="./end.html"class="identifier">end</a><s>::type</span></tt> if and only if <ttclass="literal"><spanclass="pre">s</span></tt> is empty.</li>
<li>Two different iterations through <ttclass="literal"><spanclass="pre">s</span></tt> will access its elements in the same order.</li>