Merge branch 'develop'

This commit is contained in:
Edward Diener
2015-07-16 18:16:24 -04:00
24 changed files with 3035 additions and 263 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,29 +1,38 @@
<html>
<head>
<title>contents.html</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<style>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>contents.html</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<style>
a, a:link, a:visited { color: black; font-weight: bold; }
</style>
</head>
<body>
<h4><a href="http://www.boostpro.com/mplbook/preprocessor.html" target="_top">Introduction</a></h4>
<h4><a href="topics.html">Topics</h4>
<h4><a href="terms.html">Terminology</h4>
<h4><a href="data.html">Data Types</h4>
<h4><a href="ref.html">Reference</h4>
<h4><a href="headers.html">Headers</h4>
<h4><a href="examples.html">Examples</h4>
<h4><a href="miscellanea.html">Miscellanea</h4>
<!--
<EFBFBD> Copyright Housemarque Oy 2002
<EFBFBD> Copyright Paul Mensonides 2002
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)
-->
</body>
</html>
</head>
<body>
<h4><a href="Appendix%20A%20%C2%A0%20An%20Introduction%20to%20Preprocessor%20Metaprogramming.html"
target="_top">Introduction</a></h4>
<h4><a href="topics.html">Topics</a></h4>
<a href="topics.html">
</a>
<h4><a href="topics.html"></a><a href="terms.html">Terminology</a></h4>
<a href="terms.html">
</a>
<h4><a href="terms.html"></a><a href="data.html">Data Types</a></h4>
<a href="data.html">
</a>
<h4><a href="data.html"></a><a href="ref.html">Reference</a></h4>
<a href="ref.html">
</a>
<h4><a href="ref.html"></a><a href="headers.html">Headers</a></h4>
<a href="headers.html">
</a>
<h4><a href="headers.html"></a><a href="examples.html">Examples</a></h4>
<a href="examples.html">
</a>
<h4><a href="examples.html"></a><a href="miscellanea.html">Miscellanea</a></h4>
<a href="miscellanea.html">
<!--
<EFBFBD> Copyright Housemarque Oy 2002<30> Copyright Paul Mensonides 2002
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)--> </a>
</body>
</html>

View File

@ -1,5 +1,6 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>arrays.html</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
@ -17,12 +18,19 @@
size.&nbsp; It only requires that an element exists at a certain index. </div>
<div> This allows macro parameters to be variable in size and allows data
states to change size without the user explicitly keeping track of the
size independently.</div>
size independently.<br>
<br>
An <i>array </i>can be empty and have no elements. An empty array has a
0 size. The notation for an empty array is '(0,())'.<br>
<br>
<span style="font-style: italic;"> </span></div>
<div>With variadic macro support a <i>tuple </i>has all of the
functionality as an <i>array</i>, knows its own size, and is easier
syntactically to use. Because of that an <i>array</i> should be used, as
opposed to a <i>tuple</i>, only if your compiler does not support
variadic macros.<br>
variadic macros. The only advantage an <i>array </i>has over a <i>tuple
</i>is that an <i>array </i>can be empty while a <i>tuple </i>always
has at least one element and therefore can never have a size of 0.<br>
<br>
Elements of an <i>array</i> can be extracted with <b>BOOST_PP_ARRAY_ELEM</b>,
an <i>array's</i> size can be extracted with <b>BOOST_PP_ARRAY_SIZE</b>,

View File

@ -1,46 +1,42 @@
<html>
<head>
<title>lists.html</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<h4>Lists</h4>
<div>
A <i>list</i> is a simple cons-style list with a head and a tail.&nbsp;
The head of a <i>list</i> is an element,
and the tail is either another <i>list</i> or <b>BOOST_PP_NIL</b>.
For example,
</div>
<div class="code">
(<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>)))
</div>
<div>
...is a <i>list</i> of <i>3</i> elements--<i>a</i>, <i>b</i>, and <i>c</i>.
</div>
<div>
This allows macro parameters to be variable in size and allows data states to change
size without the user explicitly keeping track of the size independently.
</div>
<div>
Elements of a <i>list</i> can be extracted with
<b>BOOST_PP_LIST_FIRST</b> and <b>BOOST_PP_LIST_REST</b>.&nbsp;
</div>
<h4>Primitives</h4>
<ul>
<li><a href="../ref/list_first.html">BOOST_PP_LIST_FIRST</a></li>
<li><a href="../ref/list_rest.html">BOOST_PP_LIST_REST</a></li>
<li><a href="../ref/nil.html">BOOST_PP_NIL</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;">
<i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
</br><i><EFBFBD> Copyright Paul Mensonides 2002</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href=
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>lists.html</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<h4>Lists</h4>
<div> A <i>list</i> is a simple cons-style list with a head and a
tail.&nbsp; The head of a <i>list</i> is an element, and the tail is
either another <i>list</i> or <b>BOOST_PP_NIL</b>. For example, </div>
<div class="code"> (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>)))
</div>
<div> ...is a <i>list</i> of <i>3</i> elements--<i>a</i>, <i>b</i>, and <i>c</i>.
</div>
<div> This allows macro parameters to be variable in size and allows data
states to change size without the user explicitly keeping track of the
size independently.<br>
<br>
A list can be empty and therefore have a size of 0. An empty list is
represented by the notation <b>BOOST_PP_NIL.<br>
<br>
</b></div>
<div> Elements of a <i>list</i> can be extracted with <b>BOOST_PP_LIST_FIRST</b>
and <b>BOOST_PP_LIST_REST</b>.&nbsp; </div>
<h4>Primitives</h4>
<ul>
<li><a href="../ref/list_first.html">BOOST_PP_LIST_FIRST</a></li>
<li><a href="../ref/list_rest.html">BOOST_PP_LIST_REST</a></li>
<li><a href="../ref/nil.html">BOOST_PP_NIL</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a href="http://www.housemarque.com"
target="_top">Housemarque Oy</a> 2002</i> <br>
<i><EFBFBD> Copyright Paul Mensonides 2002</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,30 +1,23 @@
<html>
<head>
<title>sequences.html</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<h4>
Sequences
</h4>
<div>
A <i>sequence</i> (abbreviated to <i>seq</i>) is a group of adjacent parenthesized elements. For example,
</div>
<div class="code">
(<i>a</i>)(<i>b</i>)(<i>c</i>)
</div>
<div>
...is a <i>seq</i> of <i>3</i> elements--<i>a</i>, <i>b</i>, and <i>c</i>.
</div>
<div>
<i>Sequences</i> are data structures that merge the properties of both <i>lists</i> and
<i>tuples</i> with the exception that a <i>seq</i> cannot be empty.&nbsp;
Therefore, an "empty" <i>seq</i> is considered a special case scenario that
must be handled separately in C++.
</div>
<div class="code">
<pre>
#define SEQ (x)(y)(z)
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>sequences.html</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<h4> Sequences </h4>
<div> A <i>sequence</i> (abbreviated to <i>seq</i>) is a group of adjacent
parenthesized elements. For example, </div>
<div class="code"> (<i>a</i>)(<i>b</i>)(<i>c</i>) </div>
<div> ...is a <i>seq</i> of <i>3</i> elements--<i>a</i>, <i>b</i>, and <i>c</i>.
</div>
<div> <i>Sequences</i> are data structures that merge the properties of
both <i>lists</i> and <i>tuples</i> with the exception that a <i>seq, </i>like
a <i>tuple, </i>cannot be empty.&nbsp; Therefore, an "empty" <i>seq</i>
is considered a special case scenario that must be handled separately in
C++. </div>
<div class="code">
<pre>#define SEQ (x)(y)(z)
#define REVERSE(s, state, elem) (elem) state
// append to head ^
@ -41,35 +34,27 @@ BOOST_PP_SEQ_FOLD_RIGHT(INC, BOOST_PP_SEQ_NIL, SEQ)
// ^
// special placeholder that will be "eaten"
// by appending to the tail
</pre>
</div>
<div>
<i>Sequences</i> are extremely efficient.&nbsp; Element access speed approaches
random access--even with <i>seqs</i> of up to <i>256</i> elements.&nbsp; This
is because element access (among other things) is implemented iteratively
rather than recursively.&nbsp; Therefore, elements can be accessed at extremely
high indices even on preprocessors with low maximum expansion depths.
</div>
<div>
Elements of a <i>seq</i> can be extracted with <b>BOOST_PP_SEQ_ELEM</b>.
</div>
<h4>
Primitives
</h4>
<ul>
<li>
<a href="../ref/seq_elem.html">BOOST_PP_SEQ_ELEM</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;">
<i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
</br><i><EFBFBD> Copyright Paul Mensonides 2002</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href=
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</pre> </div>
<div> <i>Sequences</i> are extremely efficient.&nbsp; Element access speed
approaches random access--even with <i>seqs</i> of up to <i>256</i>
elements.&nbsp; This is because element access (among other things) is
implemented iteratively rather than recursively.&nbsp; Therefore, elements
can be accessed at extremely high indices even on preprocessors with low
maximum expansion depths. </div>
<div> Elements of a <i>seq</i> can be extracted with <b>BOOST_PP_SEQ_ELEM</b>.
</div>
<h4> Primitives </h4>
<ul>
<li> <a href="../ref/seq_elem.html">BOOST_PP_SEQ_ELEM</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a href="http://www.housemarque.com"
target="_top">Housemarque Oy</a> 2002</i> <br>
<i><EFBFBD> Copyright Paul Mensonides 2002</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,5 +1,6 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>tuples.html</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
@ -9,13 +10,19 @@
parenthesis.&nbsp; For example, </div>
<div class="code"> (<i>a</i>, <i>b</i>, <i>c</i>) </div>
<div> ...is a <i>tuple</i> of <i>3</i> elements--<i>a</i>, <i>b</i>, and
<i>c</i>. </div>
<i>c</i>.<br>
<br>
A <i>tuple </i>cannot be empty. The notation '()' as a <i>tuple </i>is
a single element <i>tuple </i>of size 1, where the element is empty. </div>
<div> <i>Tuples</i> are fast and easy to use.&nbsp; With variadic macro
support it is not necessary to know the size of a <i>tuple; </i>without
variadic macro support&nbsp;all access to <i>tuples</i> requires
knowledge of its size. Use a <i>tuple </i>instead of an <i>array</i> if
your compiler supports variadic macros, since a <i>tuple </i>has all of
the functionality as an <i>array </i>and is easier syntactically to use.</div>
the functionality as an <i>array </i>and is easier syntactically to use.
The only functionality an <i>array </i>has which a <i>tuple </i>does
not have is that an <i>array </i>can be empty whereas a <i>tuple </i>cannot
be empty.</div>
<div> Elements of a <i>tuple</i> can be extracted with <b>BOOST_PP_TUPLE_ELEM</b>.
</div>
<h4>Primitives</h4>

View File

@ -1,34 +1,39 @@
<html>
<head>
<title>BOOST_PP_LIMIT_REPEAT</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_LIMIT_REPEAT</b> macro defines the maximum number of repetitions supported by each <b>BOOST_PP_REPEAT</b> dimension.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_LIMIT_REPEAT</b>
</div>
<h4>Remarks</h4>
<div>
This macro current expands to <i>256</i>.
</div>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/config/limits.html">&lt;boost/preprocessor/config/limits.hpp&gt;</a>
</div>
<hr size="1">
<div style="margin-left: 0px;">
<i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
</br><i><EFBFBD> Copyright Paul Mensonides 2002</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href=
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_LIMIT_REPEAT</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIMIT_REPEAT</b> macro
defines the maximum number of repetitions supported by each <b>BOOST_PP_REPEAT</b>
dimension. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_LIMIT_REPEAT</b> </div>
<h4>Remarks</h4>
<div> This macro current expands to <i>256</i>.<br>
<br>
NOTE: for the current latest versions of Microsoft's VC++ compiler there
is a nested macro limit of 256. This means in actuality that the number of
repetitions using VC++ is actually less than 256 depending on the
repetition macro being used. For the BOOST_PP_REPEAT macro this limit
appears to be 252 while for the BOOST_PP_ENUM... series of macros this
limit appears to be around 230, before the VC++ compiler gives a "C1009:
compiler limit : macros nested too deeply" error. This is a compiler
limitation of VC++ which may vary depending on the specific repetition
macro being used, and therefore is not a problem the preprocessor library
can solve.</div>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/config/limits.html">&lt;boost/preprocessor/config/limits.hpp&gt;</a>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a href="http://www.housemarque.com"
target="_top">Housemarque Oy</a> 2002</i> <br>
<i><EFBFBD> Copyright Paul Mensonides 2002</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,67 +1,55 @@
<html>
<head>
<title>BOOST_PP_SEQ_REST_N</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_SEQ_REST_N</b> macro expands to a <i>seq</i> of all but the
first <i>n</i> elements of a <i>seq</i>.
</div>
<h4>
Usage
</h4>
<div class="code">
<b>BOOST_PP_SEQ_REST_N</b>(<i>n</i>, <i>seq</i>)
</div>
<h4>
Arguments
</h4>
<dl>
<dt>n</dt>
<dd>
The number of elements to remove.
</dd>
<dt>seq</dt>
<dd>
The <i>seq</i> from which the elements are to be removed.
</dd>
</dl>
<h4>
Remarks
</h4>
<div>
This macro extracts <i>n</i> elements from the beginning of <i>seq</i> and
returns the remainder of <i>seq</i> as a new <i>seq</i>
</div>
<h4>
See Also
</h4>
<ul>
<li>
<a href="seq_first_n.html">BOOST_PP_SEQ_FIRST_N</a></li>
</ul>
<h4>
Requirements
</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/seq/rest_n.html">&lt;boost/preprocessor/seq/rest_n.hpp&gt;</a>
</div>
<h4>
Sample Code
</h4>
<div>
<pre>#include &lt;<a href="../headers/arithmetic/inc.html">boost/preprocessor/arithmetic/inc.hpp</a>&gt;<br>#include &lt;<a href="../headers/seq/elem.html">boost/preprocessor/seq/elem.hpp</a>&gt;<br>#include &lt;<a href="../headers/seq/first_n.html">boost/preprocessor/seq/first_n.hpp</a>&gt;<br>#include &lt;<a href="../headers/seq/rest_n.html">boost/preprocessor/seq/rest_n.hpp</a>&gt;<br>#include &lt;<a href="../headers/seq/size.html">boost/preprocessor/seq/size.hpp</a>&gt;<br><br>#define NUMBERS \<br> (0)(1)(2)(3)(4)(5)(6)(7)(8)(9) \<br> (10)(11)(12)(13)(14)(15)(16)(17)(18)(19) \<br> (20)(21)(22)(23)(24)(25)(26)(27)(28)(29) \<br> (30)(31)(32)(33)(34)(35)(36)(37)(38)(39) \<br> (40)(41)(42)(43)(44)(45)(46)(47)(48)(49) \<br> (50)(51)(52)(53)(54)(55)(56)(57)(58)(59) \<br> (60)(61)(62)(63)(64)(65)(66)(67)(68)(69) \<br> (70)(71)(72)(73)(74)(75)(76)(77)(78)(79) \<br> (80)(81)(82)(83)(84)(85)(86)(87)(88)(89) \<br> (90)(91)(92)(93)(94)(95)(96)(97)(98)(99) \<br> (100)(101)(102)(103)(104)(105)(106)(107)(108)(109) \<br> (110)(111)(112)(113)(114)(115)(116)(117)(118)(119) \<br> (120)(121)(122)(123)(124)(125)(126)(127)(128)(129) \<br> (130)(131)(132)(133)(134)(135)(136)(137)(138)(139) \<br> (140)(141)(142)(143)(144)(145)(146)(147)(148)(149) \<br> (150)(151)(152)(153)(154)(155)(156)(157)(158)(159) \<br> (160)(161)(162)(163)(164)(165)(166)(167)(168)(169) \<br> (170)(171)(172)(173)(174)(175)(176)(177)(178)(179) \<br> (180)(181)(182)(183)(184)(185)(186)(187)(188)(189) \<br> (190)(191)(192)(193)(194)(195)(196)(197)(198)(199) \<br> (200)(201)(202)(203)(204)(205)(206)(207)(208)(209) \<br> (210)(211)(212)(213)(214)(215)(216)(217)(218)(219) \<br> (220)(221)(222)(223)(224)(225)(226)(227)(228)(229) \<br> (230)(231)(232)(233)(234)(235)(236)(237)(238)(239) \<br> (240)(241)(242)(243)(244)(245)(246)(247)(248)(249) \<br> (250)(251)(252)(253)(254)(255)(256) \<br> /**/<br><br>#define SUPER_ADD(x, y) <a href="seq_elem.html">BOOST_PP_SEQ_ELEM</a>(y, <a href="seq_rest_n.html">BOOST_PP_SEQ_REST_N</a>(x, NUMBERS))<br><br>SUPER_ADD(100, 100) // expands to 200<br><br>#define SUPER_SUB(x, y) \<br> <a href="seq_size.html">BOOST_PP_SEQ_SIZE</a>( \<br> <a href="seq_rest_n.html">BOOST_PP_SEQ_REST_N</a>( \<br> <a href="inc.html">BOOST_PP_INC</a>(y), \<br> <a href="seq_first_n.html">BOOST_PP_SEQ_FIRST_N</a>( \<br> <a href="inc.html">BOOST_PP_INC</a>(x), NUMBERS \<br> ) \<br> ) \<br> ) \<br> /**/<br><br>SUPER_SUB(67, 25) // expands to 42<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;">
<i><EFBFBD> Copyright <a href="http://www.housemarque.com" target="_top">Housemarque Oy</a> 2002</i>
<br><i><EFBFBD> Copyright Paul Mensonides 2002</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_SEQ_REST_N</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_SEQ_REST_N</b> macro
expands to a <i>seq</i> of all but the first <i>n</i> elements of a <i>seq</i>.
</div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_SEQ_REST_N</b>(<i>n</i>, <i>seq</i>) </div>
<h4> Arguments </h4>
<dl>
<dt>n</dt>
<dd> The number of elements to remove. </dd>
<dt>seq</dt>
<dd> The <i>seq</i> from which the elements are to be removed. </dd>
</dl>
<h4> Remarks </h4>
<div> This macro extracts <i>n</i> elements from the beginning of <i>seq</i>
and returns the remainder of <i>seq</i> as a new <i>seq.<br>
<br>
</i>It is undefined behavior if <i>n </i>is greater or equal to the size
of the <i>seq</i>. </div>
<h4> See Also </h4>
<ul>
<li> <a href="seq_first_n.html">BOOST_PP_SEQ_FIRST_N</a></li>
</ul>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/seq/rest_n.html">&lt;boost/preprocessor/seq/rest_n.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/arithmetic/inc.html">boost/preprocessor/arithmetic/inc.hpp</a>&gt;<br>#include &lt;<a
href="../headers/seq/elem.html">boost/preprocessor/seq/elem.hpp</a>&gt;<br>#include &lt;<a
href="../headers/seq/first_n.html">boost/preprocessor/seq/first_n.hpp</a>&gt;<br>#include &lt;<a
href="../headers/seq/rest_n.html">boost/preprocessor/seq/rest_n.hpp</a>&gt;<br>#include &lt;<a
href="../headers/seq/size.html">boost/preprocessor/seq/size.hpp</a>&gt;<br><br>#define NUMBERS \<br> (0)(1)(2)(3)(4)(5)(6)(7)(8)(9) \<br> (10)(11)(12)(13)(14)(15)(16)(17)(18)(19) \<br> (20)(21)(22)(23)(24)(25)(26)(27)(28)(29) \<br> (30)(31)(32)(33)(34)(35)(36)(37)(38)(39) \<br> (40)(41)(42)(43)(44)(45)(46)(47)(48)(49) \<br> (50)(51)(52)(53)(54)(55)(56)(57)(58)(59) \<br> (60)(61)(62)(63)(64)(65)(66)(67)(68)(69) \<br> (70)(71)(72)(73)(74)(75)(76)(77)(78)(79) \<br> (80)(81)(82)(83)(84)(85)(86)(87)(88)(89) \<br> (90)(91)(92)(93)(94)(95)(96)(97)(98)(99) \<br> (100)(101)(102)(103)(104)(105)(106)(107)(108)(109) \<br> (110)(111)(112)(113)(114)(115)(116)(117)(118)(119) \<br> (120)(121)(122)(123)(124)(125)(126)(127)(128)(129) \<br> (130)(131)(132)(133)(134)(135)(136)(137)(138)(139) \<br> (140)(141)(142)(143)(144)(145)(146)(147)(148)(149) \<br> (150)(151)(152)(153)(154)(155)(156)(157)(158)(159) \<br> (160)(161)(162)(163)(164)(165)(166)(167)(168)(169) \<br> (170)(171)(172)(173)(174)(175)(176)(177)(178)(179) \<br> (180)(181)(182)(183)(184)(185)(186)(187)(188)(189) \<br> (190)(191)(192)(193)(194)(195)(196)(197)(198)(199) \<br> (200)(201)(202)(203)(204)(205)(206)(207)(208)(209) \<br> (210)(211)(212)(213)(214)(215)(216)(217)(218)(219) \<br> (220)(221)(222)(223)(224)(225)(226)(227)(228)(229) \<br> (230)(231)(232)(233)(234)(235)(236)(237)(238)(239) \<br> (240)(241)(242)(243)(244)(245)(246)(247)(248)(249) \<br> (250)(251)(252)(253)(254)(255)(256) \<br> /**/<br><br>#define SUPER_ADD(x, y) <a
href="seq_elem.html">BOOST_PP_SEQ_ELEM</a>(y, <a href="seq_rest_n.html">BOOST_PP_SEQ_REST_N</a>(x, NUMBERS))<br><br>SUPER_ADD(100, 100) // expands to 200<br><br>#define SUPER_SUB(x, y) \<br> <a
href="seq_size.html">BOOST_PP_SEQ_SIZE</a>( \<br> <a href="seq_rest_n.html">BOOST_PP_SEQ_REST_N</a>( \<br> <a
href="inc.html">BOOST_PP_INC</a>(y), \<br> <a href="seq_first_n.html">BOOST_PP_SEQ_FIRST_N</a>( \<br> <a
href="inc.html">BOOST_PP_INC</a>(x), NUMBERS \<br> ) \<br> ) \<br> ) \<br> /**/<br><br>SUPER_SUB(67, 25) // expands to 42</pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright <a href="http://www.housemarque.com"
target="_top">Housemarque Oy</a> 2002</i> <br>
<i><EFBFBD> Copyright Paul Mensonides 2002</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanying file <a href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a>
or copy at <a href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</a>)</small></p>
</div>
</body>
</html>

View File

@ -1,5 +1,6 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>title.html</title>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
@ -11,15 +12,14 @@
may be used as a standalone library. </div>
<div> An excerpt from <i>C++ Template Metaprogramming: Concepts, Tools, and
Techniques from Boost and Beyond</i> by Dave Abrahams and Aleksey
Gurtovoy has been made available <a href="http://www.boostpro.com/mplbook/preprocessor.html"
target="_top"><font color="blue"><b><u><i>online</i></u></b></font></a>.
Gurtovoy has been made <a href="Appendix%20A%20%C2%A0%20An%20Introduction%20to%20Preprocessor%20Metaprogramming.html"
target="_top"><font color="blue"><b><u><i>available</i></u></b></font></a>.
This excerpt contains a basic introduction to the Preprocessor library and
preprocessor metaprogramming which may help users new to the library and
users interested in seeing some of the facilities offered by the library.
</div>
<!--
<EFBFBD> Copyright Housemarque Oy 2002<30> Copyright Paul Mensonides 2002
Distributed under the Boost Software License, Version 1.0.(See accompanying file LICENSE_1_0.txt or copy at
<EFBFBD> Copyright Housemarque Oy 2002<30> Copyright Paul Mensonides 2002Distributed 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)-->
</body>
</html>