Compare commits

..

1 Commits

Author SHA1 Message Date
b287244527 Release 1.51.0
[SVN r80098]
2012-08-20 22:07:05 +00:00
203 changed files with 3063 additions and 8512 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,38 +1,29 @@
<html>
<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>
<head>
<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="AppendixA-AnIntroductiontoPreprocessorMetaprogramming.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>
</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>

View File

@ -1,55 +1,53 @@
<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>
<body>
<h4>Arrays</h4>
<div> An <i>array</i> is a data structure consisting of a two-element <i>tuple</i>.&nbsp;
The first element is the number of elements in the <i>array</i>.&nbsp;
The second element is another <i>tuple</i> of the elements in the <i>array</i>.&nbsp;
For example, </div>
<div class="code"> (<i>3</i>, (<i>a</i>, <i>b</i>, <i>c</i>)) </div>
<div> ...is an <i>array</i> of <i>3</i> elements--<i>a</i>, <i>b</i>, and
<i>c</i>. </div>
<div> The primary strength of <i>arrays</i> is that they store their own
size.&nbsp; Because of this, access to elements does not require the
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.<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. 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>,
and an <i>array</i> can be converted to the more primitive <i>tuple</i>
data structure with <b>BOOST_PP_ARRAY_DATA</b>. </div>
<h4>Primitives</h4>
<ul>
<li><a href="../ref/array_data.html">BOOST_PP_ARRAY_DATA</a></li>
<li><a href="../ref/array_elem.html">BOOST_PP_ARRAY_ELEM</a></li>
<li><a href="../ref/array_size.html">BOOST_PP_ARRAY_SIZE</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>
<title>arrays.html</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<h4>Arrays</h4>
<div>
An <i>array</i> is a data structure consisting of a two-element <i>tuple</i>.&nbsp;
The first element is the number of elements in the <i>array</i>.&nbsp;
The second element is another <i>tuple</i> of the elements in the <i>array</i>.&nbsp;
For example,
</div>
<div class="code">
(<i>3</i>, (<i>a</i>, <i>b</i>, <i>c</i>))
</div>
<div>
...is an <i>array</i> of <i>3</i> elements--<i>a</i>, <i>b</i>, and <i>c</i>.
</div>
<div>
The primary strength of <i>arrays</i> is that they store their own size.&nbsp;
Because of this, access to elements does not require the 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>
<div>
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>, and
an <i>array</i> can be converted to the more primitive <i>tuple</i> data structure
with <b>BOOST_PP_ARRAY_DATA</b>.
</div>
<h4>Primitives</h4>
<ul>
<li><a href="../ref/array_data.html">BOOST_PP_ARRAY_DATA</a></li>
<li><a href="../ref/array_elem.html">BOOST_PP_ARRAY_ELEM</a></li>
<li><a href="../ref/array_size.html">BOOST_PP_ARRAY_SIZE</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,42 +1,46 @@
<html>
<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>
<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>
</html>

View File

@ -1,23 +1,30 @@
<html>
<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)
<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)
#define REVERSE(s, state, elem) (elem) state
// append to head ^
@ -34,27 +41,35 @@ 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,42 +1,42 @@
<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>
<body>
<h4>Tuples</h4>
<div> A <i>tuple</i> is a simple comma-separated list of elements inside
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>.<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.
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>
<ul>
<li><a href="../ref/tuple_elem.html">BOOST_PP_TUPLE_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>
<head>
<title>tuples.html</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<h4>Tuples</h4>
<div>
A <i>tuple</i> is a simple comma-separated list of elements inside 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>
<div>
<i>Tuples</i> are fast and easy to use.&nbsp;
However, all access to <i>tuples</i> requires knowledge of its size.
</div>
<div>
Elements of a <i>tuple</i> can be extracted with
<b>BOOST_PP_TUPLE_ELEM</b>.
</div>
<h4>Primitives</h4>
<ul>
<li><a href="../ref/tuple_elem.html">BOOST_PP_TUPLE_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,249 +1,232 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>headers.html</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<base target="desc">
<style>
<head>
<title>headers.html</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<base target="desc">
<style>
.ps { margin-left: 30px; }
</style>
</head>
<body>
<h4> Headers <small><a href="contents.html" target="index">[back]</a></small>
</h4>
<ul>
<li>../</li>
<li class="ps"> <a href="headers/preprocessor.html">preprocessor.hpp</a></li>
<li><a href="headers/arithmetic.html">arithmetic.hpp</a></li>
<li>arithmetic/</li>
<li class="ps"><a href="headers/arithmetic/add.html">add.hpp</a></li>
<li class="ps"><a href="headers/arithmetic/dec.html">dec.hpp</a></li>
<li class="ps"><a href="headers/arithmetic/div.html">div.hpp</a></li>
<li class="ps"><a href="headers/arithmetic/inc.html">inc.hpp</a></li>
<li class="ps"><a href="headers/arithmetic/mod.html">mod.hpp</a></li>
<li class="ps"><a href="headers/arithmetic/mul.html">mul.hpp</a></li>
<li class="ps"><a href="headers/arithmetic/sub.html">sub.hpp</a></li>
<li><a href="headers/array.html">array.hpp</a></li>
<li>array/</li>
<li class="ps"><a href="headers/array/data.html">data.hpp</a></li>
<li class="ps"><a href="headers/array/elem.html">elem.hpp</a></li>
<li class="ps"><a href="headers/array/enum.html">enum.hpp</a></li>
<li class="ps"><a href="headers/array/insert.html">insert.hpp</a></li>
<li class="ps"><a href="headers/array/pop_back.html">pop_back.hpp</a></li>
<li class="ps"><a href="headers/array/pop_front.html">pop_front.hpp</a></li>
<li class="ps"><a href="headers/array/push_back.html">push_back.hpp</a></li>
<li class="ps"><a href="headers/array/push_front.html">push_front.hpp</a></li>
<li class="ps"><a href="headers/array/remove.html">remove.hpp</a></li>
<li class="ps"><a href="headers/array/replace.html">replace.hpp</a></li>
<li class="ps"><a href="headers/array/reverse.html">reverse.hpp</a></li>
<li class="ps"><a href="headers/array/size.html">size.hpp</a></li>
<li class="ps"><a href="headers/array/to_list.html">to_list.hpp</a></li>
<li class="ps"><a href="headers/array/to_seq.html">to_seq.hpp</a></li>
<li class="ps"><a href="headers/array/to_tuple.html">to_tuple.hpp</a></li>
<li><a href="headers/assert_msg.html">assert_msg.hpp*</a></li>
<li><a href="headers/cat.html">cat.hpp</a></li>
<li><a href="headers/comma.html">comma.hpp*</a></li>
<li><a href="headers/comma_if.html">comma_if.hpp*</a></li>
<li><a href="headers/comparison.html">comparison.hpp</a></li>
<li>comparison/</li>
<li class="ps"><a href="headers/comparison/equal.html">equal.hpp</a></li>
<li class="ps"><a href="headers/comparison/greater.html">greater.hpp</a></li>
<li class="ps"><a href="headers/comparison/greater_equal.html">greater_equal.hpp</a></li>
<li class="ps"><a href="headers/comparison/less.html">less.hpp</a></li>
<li class="ps"><a href="headers/comparison/less_equal.html">less_equal.hpp</a></li>
<li class="ps"><a href="headers/comparison/not_equal.html">not_equal.hpp</a></li>
<li>config/</li>
<li class="ps"><a href="headers/config/limits.html">limits.hpp</a></li>
<li class="ps"><a href="headers/config/variadics.html">config.hpp</a></li>
<li><a href="headers/control.html">control.hpp</a></li>
<li>control/</li>
<li class="ps"><a href="headers/control/deduce_d.html">deduce_d.hpp</a></li>
<li class="ps"><a href="headers/control/expr_if.html">expr_if.hpp</a></li>
<li class="ps"><a href="headers/control/expr_iif.html">expr_iif.hpp</a></li>
<li class="ps"><a href="headers/control/if.html">if.hpp</a></li>
<li class="ps"><a href="headers/control/iif.html">iif.hpp</a></li>
<li class="ps"><a href="headers/control/while.html">while.hpp</a></li>
<li><a href="headers/debug.html">debug.hpp</a></li>
<li>debug/</li>
<li class="ps"><a href="headers/debug/assert.html">assert.hpp</a></li>
<li class="ps"><a href="headers/debug/line.html">line.hpp</a></li>
<li><a href="headers/dec.html">dec.hpp*</a></li>
<li><a href="headers/empty.html">empty.hpp*</a></li>
<li><a href="headers/enum.html">enum.hpp*</a></li>
<li><a href="headers/enum_params.html">enum_params.hpp*</a></li>
<li><a href="headers/epwad.html">enum_params_with_a_default.hpp*</a></li>
<li><a href="headers/epwd.html">enum_params_with_defaults.hpp*</a></li>
<li><a href="headers/enum_shifted.html">enum_shifted.hpp*</a></li>
<li><a href="headers/enum_shifted_params.html">enum_shifted_params.hpp*</a></li>
<li><a href="headers/expand.html">expand.hpp*</a></li>
<li><a href="headers/expr_if.html">expr_if.hpp*</a></li>
<li><a href="headers/facilities.html">facilities.hpp</a></li>
<li>facilities/</li>
<li class="ps"><a href="headers/facilities/apply.html">apply.hpp</a></li>
<li class="ps"><a href="headers/facilities/empty.html">empty.hpp</a></li>
<li class="ps"><a href="headers/facilities/expand.html">expand.hpp</a></li>
<li class="ps"><a href="headers/facilities/identity.html">identity.hpp</a></li>
<li class="ps"><a href="headers/facilities/intercept.html">intercept.hpp</a></li>
<li class="ps"><a href="headers/facilities/overload.html">overload.hpp</a>
<a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="headers/for.html">for.hpp*</a></li>
<li><a href="headers/identity.html">identity.hpp*</a></li>
<li><a href="headers/if.html">if.hpp*</a></li>
<li><a href="headers/inc.html">inc.hpp*</a></li>
<li><a href="headers/iterate.html">iterate.hpp*</a></li>
<li><a href="headers/iteration.html">iteration.hpp</a></li>
<li>iteration/</li>
<li class="ps"><a href="headers/iteration/iterate.html">iterate.hpp</a></li>
<li class="ps"><a href="headers/iteration/local.html">local.hpp</a></li>
<li class="ps"><a href="headers/iteration/self.html">self.hpp</a></li>
<li><a href="headers/library.html">library.hpp</a></li>
<li><a href="headers/limits.html">limits.hpp*</a></li>
<li><a href="headers/list.html">list.hpp</a></li>
<li>list/</li>
<li class="ps"><a href="headers/list/adt.html">adt.hpp</a></li>
<li class="ps"><a href="headers/list/append.html">append.hpp</a></li>
<li class="ps"><a href="headers/list/at.html">at.hpp</a></li>
<li class="ps"><a href="headers/list/cat.html">cat.hpp</a></li>
<li class="ps"><a href="headers/list/enum.html">enum.hpp</a></li>
<li class="ps"><a href="headers/list/filter.html">filter.hpp</a></li>
<li class="ps"><a href="headers/list/first_n.html">first_n.hpp</a></li>
<li class="ps"><a href="headers/list/fold_left.html">fold_left.hpp</a></li>
<li class="ps"><a href="headers/list/fold_right.html">fold_right.hpp</a></li>
<li class="ps"><a href="headers/list/for_each.html">for_each.hpp</a></li>
<li class="ps"><a href="headers/list/for_each_i.html">for_each_i.hpp</a></li>
<li class="ps"><a href="headers/list/for_each_product.html">for_each_product.hpp</a></li>
<li class="ps"><a href="headers/list/rest_n.html">rest_n.hpp</a></li>
<li class="ps"><a href="headers/list/reverse.html">reverse.hpp</a></li>
<li class="ps"><a href="headers/list/size.html">size.hpp</a></li>
<li class="ps"><a href="headers/list/to_array.html">to_array.hpp</a></li>
<li class="ps"><a href="headers/list/to_seq.html">to_seq.hpp</a></li>
<li class="ps"><a href="headers/list/to_tuple.html">to_tuple.hpp</a></li>
<li class="ps"><a href="headers/list/transform.html">transform.hpp</a></li>
<li><a href="headers/logical.html">logical.hpp</a></li>
<li>logical/</li>
<li class="ps"><a href="headers/logical/and.html">and.hpp</a></li>
<li class="ps"><a href="headers/logical/bitand.html">bitand.hpp</a></li>
<li class="ps"><a href="headers/logical/bitnor.html">bitnor.hpp</a></li>
<li class="ps"><a href="headers/logical/bitor.html">bitor.hpp</a></li>
<li class="ps"><a href="headers/logical/bitxor.html">bitxor.hpp</a></li>
<li class="ps"><a href="headers/logical/bool.html">bool.hpp</a></li>
<li class="ps"><a href="headers/logical/compl.html">compl.hpp</a></li>
<li class="ps"><a href="headers/logical/nor.html">nor.hpp</a></li>
<li class="ps"><a href="headers/logical/not.html">not.hpp</a></li>
<li class="ps"><a href="headers/logical/or.html">or.hpp</a></li>
<li class="ps"><a href="headers/logical/xor.html">xor.hpp</a></li>
<li><a href="headers/max.html">max.hpp*</a></li>
<li><a href="headers/min.html">min.hpp*</a></li>
<li><a href="headers/punctuation.html">punctuation.hpp</a></li>
<li>punctuation/</li>
<li class="ps"><a href="headers/punctuation/comma.html">comma.hpp</a></li>
<li class="ps"><a href="headers/punctuation/comma_if.html">comma_if.hpp</a></li>
<li class="ps"><a href="headers/punctuation/is_begin_parens.html">is_begin_parens.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/punctuation/paren.html">paren.hpp</a></li>
<li class="ps"><a href="headers/punctuation/paren_if.html">paren_if.hpp</a></li>
<li class="ps"><a href="headers/punctuation/remove_parens.html">remove_parens.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="headers/repeat.html">repeat.hpp*</a></li>
<li><a href="headers/repeat_2nd.html">repeat_2nd.hpp*</a></li>
<li><a href="headers/repeat_3rd.html">repeat_3rd.hpp*</a></li>
<li><a href="headers/repeat_from_to.html">repeat_from_to.hpp*</a></li>
<li><a href="headers/repeat_from_to_2nd.html">repeat_from_to_2nd.hpp*</a></li>
<li><a href="headers/repeat_from_to_3rd.html">repeat_from_to_3rd.hpp*</a></li>
<li><a href="headers/repetition.html">repetition.hpp</a></li>
<li>repetition/</li>
<li class="ps"><a href="headers/repetition/deduce_r.html">deduce_r.hpp</a></li>
<li class="ps"><a href="headers/repetition/deduce_z.html">deduce_z.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum.html">enum.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_binary_params.html">enum_binary_params.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_params.html">enum_params.hpp</a></li>
<li class="ps"><a href="headers/repetition/epwad.html">enum_params_with_a_default.hpp</a></li>
<li class="ps"><a href="headers/repetition/epwd.html">enum_params_with_defaults.hpp</a></li>
<li class="ps"><a href="headers/repetition/esbp.html">enum_shifted_binary_params.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_shifted_params.html">enum_shifted_params.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_shifted.html">enum_shifted.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_trailing.html">enum_trailing.hpp</a></li>
<li class="ps"><a href="headers/repetition/etbp.html">enum_trailing_binary_params.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_trailing_params.html">enum_trailing_params.hpp</a></li>
<li class="ps"><a href="headers/repetition/for.html">for.hpp</a></li>
<li class="ps"><a href="headers/repetition/repeat.html">repeat.hpp</a></li>
<li class="ps"><a href="headers/repetition/repeat_from_to.html">repeat_from_to.hpp</a></li>
<li><a href="headers/selection.html">selection.hpp</a></li>
<li>selection/</li>
<li class="ps"><a href="headers/selection/max.html">max.hpp</a></li>
<li class="ps"><a href="headers/selection/min.html">min.hpp</a></li>
<li><a href="headers/seq.html">seq.hpp</a></li>
<li>seq/</li>
<li class="ps"><a href="headers/seq/cat.html">cat.hpp</a></li>
<li class="ps"><a href="headers/seq/elem.html">elem.hpp</a></li>
<li class="ps"><a href="headers/seq/enum.html">enum.hpp</a></li>
<li class="ps"><a href="headers/seq/filter.html">filter.hpp</a></li>
<li class="ps"><a href="headers/seq/first_n.html">first_n.hpp</a></li>
<li class="ps"><a href="headers/seq/fold_left.html">fold_left.hpp</a></li>
<li class="ps"><a href="headers/seq/fold_right.html">fold_right.hpp</a></li>
<li class="ps"><a href="headers/seq/for_each.html">for_each.hpp</a></li>
<li class="ps"><a href="headers/seq/for_each_i.html">for_each_i.hpp</a></li>
<li class="ps"><a href="headers/seq/for_each_product.html">for_each_product.hpp</a></li>
<li class="ps"><a href="headers/seq/insert.html">insert.hpp</a></li>
<li class="ps"><a href="headers/seq/pop_back.html">pop_back.hpp</a></li>
<li class="ps"><a href="headers/seq/pop_front.html">pop_front.hpp</a></li>
<li class="ps"><a href="headers/seq/push_back.html">push_back.hpp</a></li>
<li class="ps"><a href="headers/seq/push_front.html">push_front.hpp</a></li>
<li class="ps"><a href="headers/seq/remove.html">remove.hpp</a></li>
<li class="ps"><a href="headers/seq/replace.html">replace.hpp</a></li>
<li class="ps"><a href="headers/seq/rest_n.html">rest_n.hpp</a></li>
<li class="ps"><a href="headers/seq/reverse.html">reverse.hpp</a></li>
<li class="ps"><a href="headers/seq/seq.html">seq.hpp</a></li>
<li class="ps"><a href="headers/seq/size.html">size.hpp</a></li>
<li class="ps"><a href="headers/seq/subseq.html">subseq.hpp</a></li>
<li class="ps"><a href="headers/seq/to_array.html">to_array.hpp</a></li>
<li class="ps"><a href="headers/seq/to_list.html">to_list.hpp</a></li>
<li class="ps"><a href="headers/seq/to_tuple.html">to_tuple.hpp</a></li>
<li class="ps"><a href="headers/seq/transform.html">transform.hpp</a></li>
<li class="ps"><a href="headers/seq/variadic_seq_to_seq.html">variadic_seq_to_seq.hpp</a></li>
<li><a href="headers/slot.html">slot.hpp</a></li>
<li>slot/</li>
<li class="ps"><a href="headers/slot/counter.html">counter.hpp</a></li>
<li class="ps"><a href="headers/slot/slot.html">slot.hpp</a></li>
<li><a href="headers/tuple.html">tuple.hpp</a></li>
<li>tuple/</li>
<li class="ps"><a href="headers/tuple/eat.html">eat.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/tuple/elem.html">elem.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/tuple/enum.html">enum.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/tuple/insert.html">insert.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/tuple/pop_back.html">pop_back.hpp</a> <a
href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/tuple/pop_front.html">pop_front.hpp</a> <a
href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/tuple/push_back.html">push_back.hpp</a> <a
href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/tuple/push_front.html">push_front.hpp</a>
<a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/tuple/rem.html">rem.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/tuple/remove.html">remove.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/tuple/replace.html">replace.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/tuple/reverse.html">reverse.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/tuple/size.html">size.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/tuple/to_array.html">to_array.hpp</a> <a
href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/tuple/to_list.html">to_list.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/tuple/to_seq.html">to_seq.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="headers/stringize.html">stringize.hpp</a></li>
<li><a href="headers/variadic.html">variadic.hpp</a></li>
<li>variadic/</li>
<li class="ps"><a href="headers/variadic/elem.html">elem.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/variadic/size.html">size.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/variadic/to_array.html">to_array.hpp</a> <a
href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/variadic/to_list.html">to_list.hpp</a> <a
href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/variadic/to_seq.html">to_seq.hpp</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li class="ps"><a href="headers/variadic/to_tuple.html">to_tuple.hpp</a> <a
href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="headers/while.html">while.hpp*</a></li>
<li><a href="headers/wstringize.html">wstringize.hpp</a></li>
</ul>
<!--
<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)-->
</body>
</head>
<body>
<h4> Headers <small><a href="contents.html" target="index">[back]</a></small>
</h4>
<ul>
<li>../</li>
<li class="ps"> <a href="headers/preprocessor.html">preprocessor.hpp</a></li>
<li><a href="headers/arithmetic.html">arithmetic.hpp</a></li>
<li>arithmetic/</li>
<li class="ps"><a href="headers/arithmetic/add.html">add.hpp</a></li>
<li class="ps"><a href="headers/arithmetic/dec.html">dec.hpp</a></li>
<li class="ps"><a href="headers/arithmetic/div.html">div.hpp</a></li>
<li class="ps"><a href="headers/arithmetic/inc.html">inc.hpp</a></li>
<li class="ps"><a href="headers/arithmetic/mod.html">mod.hpp</a></li>
<li class="ps"><a href="headers/arithmetic/mul.html">mul.hpp</a></li>
<li class="ps"><a href="headers/arithmetic/sub.html">sub.hpp</a></li>
<li><a href="headers/array.html">array.hpp</a></li>
<li>array/</li>
<li class="ps"><a href="headers/array/data.html">data.hpp</a></li>
<li class="ps"><a href="headers/array/elem.html">elem.hpp</a></li>
<li class="ps"><a href="headers/array/enum.html">enum.hpp</a></li>
<li class="ps"><a href="headers/array/insert.html">insert.hpp</a></li>
<li class="ps"><a href="headers/array/pop_back.html">pop_back.hpp</a></li>
<li class="ps"><a href="headers/array/pop_front.html">pop_front.hpp</a></li>
<li class="ps"><a href="headers/array/push_back.html">push_back.hpp</a></li>
<li class="ps"><a href="headers/array/push_front.html">push_front.hpp</a></li>
<li class="ps"><a href="headers/array/remove.html">remove.hpp</a></li>
<li class="ps"><a href="headers/array/replace.html">replace.hpp</a></li>
<li class="ps"><a href="headers/array/reverse.html">reverse.hpp</a></li>
<li class="ps"><a href="headers/array/size.html">size.hpp</a></li>
<li class="ps"><a href="headers/array/to_list.html">to_list.hpp</a></li>
<li class="ps"><a href="headers/array/to_seq.html">to_seq.hpp</a></li>
<li class="ps"><a href="headers/array/to_tuple.html">to_tuple.hpp</a></li>
<li><a href="headers/assert_msg.html">assert_msg.hpp*</a></li>
<li><a href="headers/cat.html">cat.hpp</a></li>
<li><a href="headers/comma.html">comma.hpp*</a></li>
<li><a href="headers/comma_if.html">comma_if.hpp*</a></li>
<li><a href="headers/comparison.html">comparison.hpp</a></li>
<li>comparison/</li>
<li class="ps"><a href="headers/comparison/equal.html">equal.hpp</a></li>
<li class="ps"><a href="headers/comparison/greater.html">greater.hpp</a></li>
<li class="ps"><a href="headers/comparison/greater_equal.html">greater_equal.hpp</a></li>
<li class="ps"><a href="headers/comparison/less.html">less.hpp</a></li>
<li class="ps"><a href="headers/comparison/less_equal.html">less_equal.hpp</a></li>
<li class="ps"><a href="headers/comparison/not_equal.html">not_equal.hpp</a></li>
<li>config/</li>
<li class="ps"><a href="headers/config/limits.html">limits.hpp</a></li>
<li class="ps"><a href="headers/config/variadics.html">variadics.hpp</a></li>
<li><a href="headers/control.html">control.hpp</a></li>
<li>control/</li>
<li class="ps"><a href="headers/control/deduce_d.html">deduce_d.hpp</a></li>
<li class="ps"><a href="headers/control/expr_if.html">expr_if.hpp</a></li>
<li class="ps"><a href="headers/control/expr_iif.html">expr_iif.hpp</a></li>
<li class="ps"><a href="headers/control/if.html">if.hpp</a></li>
<li class="ps"><a href="headers/control/iif.html">iif.hpp</a></li>
<li class="ps"><a href="headers/control/while.html">while.hpp</a></li>
<li><a href="headers/debug.html">debug.hpp</a></li>
<li>debug/</li>
<li class="ps"><a href="headers/debug/assert.html">assert.hpp</a></li>
<li class="ps"><a href="headers/debug/line.html">line.hpp</a></li>
<li><a href="headers/dec.html">dec.hpp*</a></li>
<li><a href="headers/empty.html">empty.hpp*</a></li>
<li><a href="headers/enum.html">enum.hpp*</a></li>
<li><a href="headers/enum_params.html">enum_params.hpp*</a></li>
<li><a href="headers/epwad.html">enum_params_with_a_default.hpp*</a></li>
<li><a href="headers/epwd.html">enum_params_with_defaults.hpp*</a></li>
<li><a href="headers/enum_shifted.html">enum_shifted.hpp*</a></li>
<li><a href="headers/enum_shifted_params.html">enum_shifted_params.hpp*</a></li>
<li><a href="headers/expand.html">expand.hpp*</a></li>
<li><a href="headers/expr_if.html">expr_if.hpp*</a></li>
<li><a href="headers/facilities.html">facilities.hpp</a></li>
<li>facilities/</li>
<li class="ps"><a href="headers/facilities/apply.html">apply.hpp</a></li>
<li class="ps"><a href="headers/facilities/empty.html">empty.hpp</a></li>
<li class="ps"><a href="headers/facilities/expand.html">expand.hpp</a></li>
<li class="ps"><a href="headers/facilities/identity.html">identity.hpp</a></li>
<li class="ps"><a href="headers/facilities/intercept.html">intercept.hpp</a></li>
<li class="ps"><a href="headers/facilities/overload.html">overload.hpp</a> (v)</li>
<li><a href="headers/for.html">for.hpp*</a></li>
<li><a href="headers/identity.html">identity.hpp*</a></li>
<li><a href="headers/if.html">if.hpp*</a></li>
<li><a href="headers/inc.html">inc.hpp*</a></li>
<li><a href="headers/iterate.html">iterate.hpp*</a></li>
<li><a href="headers/iteration.html">iteration.hpp</a></li>
<li>iteration/</li>
<li class="ps"><a href="headers/iteration/iterate.html">iterate.hpp</a></li>
<li class="ps"><a href="headers/iteration/local.html">local.hpp</a></li>
<li class="ps"><a href="headers/iteration/self.html">self.hpp</a></li>
<li><a href="headers/library.html">library.hpp</a></li>
<li><a href="headers/limits.html">limits.hpp*</a></li>
<li><a href="headers/list.html">list.hpp</a></li>
<li>list/</li>
<li class="ps"><a href="headers/list/adt.html">adt.hpp</a></li>
<li class="ps"><a href="headers/list/append.html">append.hpp</a></li>
<li class="ps"><a href="headers/list/at.html">at.hpp</a></li>
<li class="ps"><a href="headers/list/cat.html">cat.hpp</a></li>
<li class="ps"><a href="headers/list/enum.html">enum.hpp</a></li>
<li class="ps"><a href="headers/list/filter.html">filter.hpp</a></li>
<li class="ps"><a href="headers/list/first_n.html">first_n.hpp</a></li>
<li class="ps"><a href="headers/list/fold_left.html">fold_left.hpp</a></li>
<li class="ps"><a href="headers/list/fold_right.html">fold_right.hpp</a></li>
<li class="ps"><a href="headers/list/for_each.html">for_each.hpp</a></li>
<li class="ps"><a href="headers/list/for_each_i.html">for_each_i.hpp</a></li>
<li class="ps"><a href="headers/list/for_each_product.html">for_each_product.hpp</a></li>
<li class="ps"><a href="headers/list/rest_n.html">rest_n.hpp</a></li>
<li class="ps"><a href="headers/list/reverse.html">reverse.hpp</a></li>
<li class="ps"><a href="headers/list/size.html">size.hpp</a></li>
<li class="ps"><a href="headers/list/to_array.html">to_array.hpp</a></li>
<li class="ps"><a href="headers/list/to_seq.html">to_seq.hpp</a></li>
<li class="ps"><a href="headers/list/to_tuple.html">to_tuple.hpp</a></li>
<li class="ps"><a href="headers/list/transform.html">transform.hpp</a></li>
<li><a href="headers/logical.html">logical.hpp</a></li>
<li>logical/</li>
<li class="ps"><a href="headers/logical/and.html">and.hpp</a></li>
<li class="ps"><a href="headers/logical/bitand.html">bitand.hpp</a></li>
<li class="ps"><a href="headers/logical/bitnor.html">bitnor.hpp</a></li>
<li class="ps"><a href="headers/logical/bitor.html">bitor.hpp</a></li>
<li class="ps"><a href="headers/logical/bitxor.html">bitxor.hpp</a></li>
<li class="ps"><a href="headers/logical/bool.html">bool.hpp</a></li>
<li class="ps"><a href="headers/logical/compl.html">compl.hpp</a></li>
<li class="ps"><a href="headers/logical/nor.html">nor.hpp</a></li>
<li class="ps"><a href="headers/logical/not.html">not.hpp</a></li>
<li class="ps"><a href="headers/logical/or.html">or.hpp</a></li>
<li class="ps"><a href="headers/logical/xor.html">xor.hpp</a></li>
<li><a href="headers/max.html">max.hpp*</a></li>
<li><a href="headers/min.html">min.hpp*</a></li>
<li><a href="headers/punctuation.html">punctuation.hpp</a></li>
<li>punctuation/</li>
<li class="ps"><a href="headers/punctuation/comma.html">comma.hpp</a></li>
<li class="ps"><a href="headers/punctuation/comma_if.html">comma_if.hpp</a></li>
<li class="ps"><a href="headers/punctuation/paren.html">paren.hpp</a></li>
<li class="ps"><a href="headers/punctuation/paren_if.html">paren_if.hpp</a></li>
<li><a href="headers/repeat.html">repeat.hpp*</a></li>
<li><a href="headers/repeat_2nd.html">repeat_2nd.hpp*</a></li>
<li><a href="headers/repeat_3rd.html">repeat_3rd.hpp*</a></li>
<li><a href="headers/repeat_from_to.html">repeat_from_to.hpp*</a></li>
<li><a href="headers/repeat_from_to_2nd.html">repeat_from_to_2nd.hpp*</a></li>
<li><a href="headers/repeat_from_to_3rd.html">repeat_from_to_3rd.hpp*</a></li>
<li><a href="headers/repetition.html">repetition.hpp</a></li>
<li>repetition/</li>
<li class="ps"><a href="headers/repetition/deduce_r.html">deduce_r.hpp</a></li>
<li class="ps"><a href="headers/repetition/deduce_z.html">deduce_z.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum.html">enum.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_binary_params.html">enum_binary_params.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_params.html">enum_params.hpp</a></li>
<li class="ps"><a href="headers/repetition/epwad.html">enum_params_with_a_default.hpp</a></li>
<li class="ps"><a href="headers/repetition/epwd.html">enum_params_with_defaults.hpp</a></li>
<li class="ps"><a href="headers/repetition/esbp.html">enum_shifted_binary_params.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_shifted_params.html">enum_shifted_params.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_shifted.html">enum_shifted.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_trailing.html">enum_trailing.hpp</a></li>
<li class="ps"><a href="headers/repetition/etbp.html">enum_trailing_binary_params.hpp</a></li>
<li class="ps"><a href="headers/repetition/enum_trailing_params.html">enum_trailing_params.hpp</a></li>
<li class="ps"><a href="headers/repetition/for.html">for.hpp</a></li>
<li class="ps"><a href="headers/repetition/repeat.html">repeat.hpp</a></li>
<li class="ps"><a href="headers/repetition/repeat_from_to.html">repeat_from_to.hpp</a></li>
<li><a href="headers/selection.html">selection.hpp</a></li>
<li>selection/</li>
<li class="ps"><a href="headers/selection/max.html">max.hpp</a></li>
<li class="ps"><a href="headers/selection/min.html">min.hpp</a></li>
<li><a href="headers/seq.html">seq.hpp</a></li>
<li>seq/</li>
<li class="ps"><a href="headers/seq/cat.html">cat.hpp</a></li>
<li class="ps"><a href="headers/seq/elem.html">elem.hpp</a></li>
<li class="ps"><a href="headers/seq/enum.html">enum.hpp</a></li>
<li class="ps"><a href="headers/seq/filter.html">filter.hpp</a></li>
<li class="ps"><a href="headers/seq/first_n.html">first_n.hpp</a></li>
<li class="ps"><a href="headers/seq/fold_left.html">fold_left.hpp</a></li>
<li class="ps"><a href="headers/seq/fold_right.html">fold_right.hpp</a></li>
<li class="ps"><a href="headers/seq/for_each.html">for_each.hpp</a></li>
<li class="ps"><a href="headers/seq/for_each_i.html">for_each_i.hpp</a></li>
<li class="ps"><a href="headers/seq/for_each_product.html">for_each_product.hpp</a></li>
<li class="ps"><a href="headers/seq/insert.html">insert.hpp</a></li>
<li class="ps"><a href="headers/seq/pop_back.html">pop_back.hpp</a></li>
<li class="ps"><a href="headers/seq/pop_front.html">pop_front.hpp</a></li>
<li class="ps"><a href="headers/seq/push_back.html">push_back.hpp</a></li>
<li class="ps"><a href="headers/seq/push_front.html">push_front.hpp</a></li>
<li class="ps"><a href="headers/seq/remove.html">remove.hpp</a></li>
<li class="ps"><a href="headers/seq/replace.html">replace.hpp</a></li>
<li class="ps"><a href="headers/seq/rest_n.html">rest_n.hpp</a></li>
<li class="ps"><a href="headers/seq/reverse.html">reverse.hpp</a></li>
<li class="ps"><a href="headers/seq/seq.html">seq.hpp</a></li>
<li class="ps"><a href="headers/seq/size.html">size.hpp</a></li>
<li class="ps"><a href="headers/seq/subseq.html">subseq.hpp</a></li>
<li class="ps"><a href="headers/seq/to_array.html">to_array.hpp</a></li>
<li class="ps"><a href="headers/seq/to_list.html">to_list.hpp</a></li>
<li class="ps"><a href="headers/seq/to_tuple.html">to_tuple.hpp</a></li>
<li class="ps"><a href="headers/seq/transform.html">transform.hpp</a></li>
<li><a href="headers/slot.html">slot.hpp</a></li>
<li>slot/</li>
<li class="ps"><a href="headers/slot/counter.html">counter.hpp</a></li>
<li class="ps"><a href="headers/slot/slot.html">slot.hpp</a></li>
<li><a href="headers/tuple.html">tuple.hpp</a></li>
<li>tuple/</li>
<li class="ps"><a href="headers/tuple/eat.html">eat.hpp</a> (v)</li>
<li class="ps"><a href="headers/tuple/elem.html">elem.hpp</a> (v)</li>
<li class="ps"><a href="headers/tuple/enum.html">enum.hpp</a> (v)</li>
<li class="ps"><a href="headers/tuple/rem.html">rem.hpp</a> (v)</li>
<li class="ps"><a href="headers/tuple/reverse.html">reverse.hpp</a> (v)</li>
<li class="ps"><a href="headers/tuple/size.html">size.hpp</a> (v)</li>
<li class="ps"><a href="headers/tuple/to_array.html">to_array.hpp</a> (v)</li>
<li class="ps"><a href="headers/tuple/to_list.html">to_list.hpp</a> (v)</li>
<li class="ps"><a href="headers/tuple/to_seq.html">to_seq.hpp</a> (v)</li>
<li><a href="headers/stringize.html">stringize.hpp</a></li>
<li><a href="headers/variadic.html">variadic.hpp</a></li>
<li>variadic/</li>
<li class="ps"><a href="headers/variadic/elem.html">elem.hpp</a> (v)</li>
<li class="ps"><a href="headers/variadic/size.html">size.hpp</a> (v)</li>
<li class="ps"><a href="headers/variadic/to_array.html">to_array.hpp</a> (v)</li>
<li class="ps"><a href="headers/variadic/to_list.html">to_list.hpp</a> (v)</li>
<li class="ps"><a href="headers/variadic/to_seq.html">to_seq.hpp</a> (v)</li>
<li class="ps"><a href="headers/variadic/to_tuple.html">to_tuple.hpp</a> (v)</li>
<li><a href="headers/while.html">while.hpp*</a></li>
<li><a href="headers/wstringize.html">wstringize.hpp</a></li>
</ul>
<!--
<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>

View File

@ -11,7 +11,7 @@ defines a macro that converts an <i>array</i> to a <i>list</i>. </div>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/array_to_list.html">BOOST_PP_ARRAY_TO_LIST</a></li>
<li><a href="../../ref/to_list.html">BOOST_PP_ARRAY_TO_LIST</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011</i> </div>

View File

@ -1,19 +1,19 @@
<html>
<head>
<title>config/config.hpp</title>
<title>config/variadics.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>config/config.hpp</b>
header defines internal configuration macros as well as a macro for determining variadic macro support. The file
is automatically included whenever any Boost PP macros are used. The end-user can manually
include it in order to use the BOOST_PP_VARIADICS macro, but normally should never have to do so. </div>
The <b>config/variadics.hpp</b>
header defines a macro for determining variadic macro support. The file
is automatically included when needed internally. The end-user can
include it also in order to use the macro. </div>
<h4>
Usage
</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/config/config.hpp&gt;</b>
#include <b>&lt;boost/preprocessor/config/variadics.hpp&gt;</b>
</div>
<h4>
Contents
@ -21,7 +21,7 @@ include it in order to use the BOOST_PP_VARIADICS macro, but normally should nev
<ul>
<li><a href="../../ref/variadics.html">BOOST_PP_VARIADICS</a></li></ul>
<hr size="1">
<div style="margin-left: 0px;"><i><EFBFBD> Copyright Edward Diener 2011,2014</i>
<div style="margin-left: 0px;"><i><EFBFBD> Copyright Edward Diener 2011</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See

View File

@ -18,7 +18,7 @@
<li><a href="facilities/expand.html">&lt;boost/preprocessor/facilities/expand.hpp&gt;</a></li>
<li><a href="facilities/identity.html">&lt;boost/preprocessor/facilities/identity.hpp&gt;</a></li>
<li><a href="facilities/intercept.html">&lt;boost/preprocessor/facilities/intercept.hpp&gt;</a></li>
<li><a href="facilities/overload.html">&lt;boost/preprocessor/facilities/overload.hpp&gt;</a> <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="facilities/overload.html">&lt;boost/preprocessor/facilities/overload.hpp&gt;</a> (v)</li>
</ul>
<hr size="1">
<div style="margin-left: 0px;">

View File

@ -5,7 +5,7 @@
</head>
<body>
<div style="margin-left: 0px;">
The <b>facilities/identity.hpp</b> header defines utility macros to use with <b>BOOST_PP_IF</b> and <b>BOOST_PP_IIF</b>.
The <b>facilities/identity.hpp</b> header defines a utility macro to use with <b>BOOST_PP_IF</b> and <b>BOOST_PP_IIF</b>.
</div>
<h4>Usage</h4>
<div class="code">
@ -14,13 +14,11 @@
<h4>Contents</h4>
<ul>
<li><a href="../../ref/identity.html">BOOST_PP_IDENTITY</a></li>
<li><a href="../../ref/identity_n.html">BOOST_PP_IDENTITY_N</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>
</br><i><EFBFBD> Copyright Edward Diener 2015</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See

View File

@ -13,11 +13,11 @@
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/overload.html">BOOST_PP_OVERLOAD</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="../../ref/overload.html">BOOST_PP_OVERLOAD</a> (v)</li>
</ul>
<hr size="1">
<div style="margin-left: 0px;">
<i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i>
<i></i><i><EFBFBD> Copyright Edward Diener 2011</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See

View File

@ -1,26 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>punctuation/is_begin_parens.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>punctuation/is_begin_parens.hpp</b>
header defines a macro that determines if variadic data begins with a
parenthesis.</div>
<h4>Usage</h4>
<div class="code"> #include <b>&lt;boost/preprocessor/punctuation/is_begin_parens.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/is_begin_parens.html">BOOST_PP_IS_BEGIN_PARENS</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2014</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,26 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>punctuation/remove_parens.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>punctuation/remove_parens.hpp</b>
header defines a macro that removes the beginning parenthesis from its
input if it exists.</div>
<h4>Usage</h4>
<div class="code"> #include <b>&lt;boost/preprocessor/punctuation/remove_parens.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/remove_parens.html">BOOST_PP_REMOVE_PARENS</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2014</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

@ -69,8 +69,6 @@
<a href="seq/to_tuple.html">&lt;boost/preprocessor/seq/to_tuple.hpp&gt;</a></li>
<li>
<a href="seq/transform.html">&lt;boost/preprocessor/seq/transform.hpp&gt;</a></li>
<li>
<a href="seq/variadic_seq_to_seq.html">&lt;boost/preprocessor/seq/variadic_seq_to_seq.hpp&gt;</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;">

View File

@ -1,34 +0,0 @@
<html>
<head>
<title>seq/variadic_seq_to_seq.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>seq/variadic_seq_to_seq.hpp</b> header defines a macro that converts a <i>variadic seq</i> into a <i>seq</i>.
</div>
<h4>
Usage
</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/seq/variadic_seq_to_seq.hpp&gt;</b>
</div>
<h4>
Contents
</h4>
<ul>
<li>
<a href="../../ref/variadic_seq_to_seq.html">BOOST_PP_VARIADIC_SEQ_TO_SEQ</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;">
<i>© Copyright Paul Mensonides 2012</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,59 +1,37 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<head>
<title>tuple.hpp</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>tuple.hpp</b> includes the headers
in the <i>tuple</i> folder. </div>
<h4>Usage</h4>
<div class="code"> #include <b>&lt;boost/preprocessor/tuple.hpp&gt;</b> </div>
<h4>Includes</h4>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>tuple.hpp</b> includes the headers in the <i>tuple</i> folder.
</div>
<h4>Usage</h4>
<div class="code">
#include <b>&lt;boost/preprocessor/tuple.hpp&gt;</b>
</div>
<h4>Includes<br></h4>
<ul>
<li><a href="tuple/eat.html">&lt;boost/preprocessor/tuple/eat.hpp&gt;</a>
<a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="tuple/elem.html">&lt;boost/preprocessor/tuple/elem.hpp&gt;</a>
<a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="tuple/enum.html">&lt;boost/preprocessor/tuple/enum.hpp&gt;</a>
<a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="tuple/insert.html">&lt;boost/preprocessor/tuple/insert.hpp&gt;</a>
<a href="../topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="tuple/pop_back.html">&lt;boost/preprocessor/tuple/pop_back.hpp&gt;</a>
<a href="../topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="tuple/pop_front.html">&lt;boost/preprocessor/tuple/pop_front.hpp&gt;</a>
<a href="../topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="tuple/push_back.html">&lt;boost/preprocessor/tuple/push_back.hpp&gt;</a>
<a href="../topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="tuple/push_front.html">&lt;boost/preprocessor/tuple/push_front.hpp&gt;</a>
<a href="../topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="tuple/rem.html">&lt;boost/preprocessor/tuple/rem.hpp&gt;</a>
<a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="tuple/remove.html">&lt;boost/preprocessor/tuple/remove.hpp&gt;</a>
<a href="../topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="tuple/replace.html">&lt;boost/preprocessor/tuple/replace.hpp&gt;</a>
<a href="../topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="tuple/reverse.html">&lt;boost/preprocessor/tuple/reverse.hpp&gt;</a>
<a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="tuple/size.html">&lt;boost/preprocessor/tuple/size.hpp&gt;</a>
<a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="tuple/to_array.html">&lt;boost/preprocessor/tuple/to_array.hpp&gt;</a>
<a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="tuple/to_list.html">&lt;boost/preprocessor/tuple/to_list.hpp&gt;</a>
<a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="tuple/to_seq.html">&lt;boost/preprocessor/tuple/to_seq.hpp&gt;</a>
<a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</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<br>
</i><i><EFBFBD> Copyright Edward Diener 2013</i><br>
</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>
<li><a href="tuple/eat.html">&lt;boost/preprocessor/tuple/eat.hpp&gt;</a> (v)</li>
<li><a href="tuple/elem.html">&lt;boost/preprocessor/tuple/elem.hpp&gt;</a> (v)</li>
<li><a href="tuple/enum.html">&lt;boost/preprocessor/tuple/enum.hpp&gt;</a> (v)</li>
<li><a href="tuple/rem.html">&lt;boost/preprocessor/tuple/rem.hpp&gt;</a> (v)</li>
<li><a href="tuple/reverse.html">&lt;boost/preprocessor/tuple/reverse.hpp&gt;</a> (v)</li>
<li><a href="tuple/size.html">&lt;boost/preprocessor/tuple/size.hpp&gt;</a> (v)</li>
<li><a href="tuple/to_array.html">&lt;boost/preprocessor/tuple/to_array.hpp&gt;</a> (v)</li>
<li><a href="tuple/to_list.html">&lt;boost/preprocessor/tuple/to_list.hpp&gt;</a> (v)</li>
<li><a href="tuple/to_seq.html">&lt;boost/preprocessor/tuple/to_seq.hpp&gt;</a> (v)</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

@ -9,7 +9,7 @@
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/tuple_eat.html">BOOST_PP_TUPLE_EAT</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
<li><a href="../../ref/tuple_eat.html">BOOST_PP_TUPLE_EAT</a> (v)<br>
</li>
</ul>
<hr size="1">

View File

@ -9,7 +9,7 @@
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/tuple_elem.html">BOOST_PP_TUPLE_ELEM</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
<li><a href="../../ref/tuple_elem.html">BOOST_PP_TUPLE_ELEM</a> (v)<br>
</li>
</ul>
<hr size="1">

View File

@ -2,7 +2,7 @@
<title>tuple/enum.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css"></head><body>
<div style="margin-left: 0px;">
The <b>tuple/enum.hpp</b> header defines a macro to convert a <i>tuple</i> to its comma-separated elements.
The <b>tuple/enum.hpp</b> header defines a macro to onvert a <i>tuple</i> to its comma-separated elements.
</div>
<h4>Usage</h4>
<div class="code">
@ -10,12 +10,12 @@
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/tuple_enum.html">BOOST_PP_TUPLE_ENUM</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
<li><a href="../../ref/tuple_enum.html">BOOST_PP_TUPLE_ENUM</a> (v)<br>
</li>
</ul>
<hr size="1">
<div style="margin-left: 0px;">
<i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i>
<i></i><i><EFBFBD> Copyright Edward Diener 2011</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See

View File

@ -1,27 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>tuple/insert.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>tuple/insert.hpp</b> header defines
macros to insert an element into an <i>tuple</i>.</div>
<h4>Usage</h4>
<div class="code"> #include <b>&lt;boost/preprocessor/tuple/insert.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/tuple_insert.html">BOOST_PP_TUPLE_INSERT</a> <a href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="../../ref/tuple_insert_d.html">BOOST_PP_TUPLE_INSERT_D</a> <a
href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</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,28 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>tuple/pop_back.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>tuple/pop_back.hpp</b> header
defines macros to pop an element from the end of an <i>tuple</i>.</div>
<h4>Usage</h4>
<div class="code"> #include <b>&lt;boost/preprocessor/tuple/pop_back.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/tuple_pop_back.html">BOOST_PP_TUPLE_POP_BACK</a> <a
href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="../../ref/tuple_pop_back_z.html">BOOST_PP_TUPLE_POP_BACK_Z</a>
<a href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</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,28 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>tuple/pop_front.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>tuple/pop_front.hpp</b> header
defines macros to pop an element from the beginning of an <i>tuple</i>.</div>
<h4>Usage</h4>
<div class="code"> #include <b>&lt;boost/preprocessor/tuple/pop_front.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/tuple_pop_front.html">BOOST_PP_TUPLE_POP_FRONT</a>
<a href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="../../ref/tuple_pop_front_z.html">BOOST_PP_TUPLE_POP_FRONT_Z</a>
<a href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</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,26 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>tuple/push_back.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>tuple/push_back.hpp</b> header
defines a macro to append an element to the end of an <i>tuple</i>.</div>
<h4>Usage</h4>
<div class="code"> #include <b>&lt;boost/preprocessor/tuple/push_back.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/tuple_push_back.html">BOOST_PP_TUPLE_PUSH_BACK</a>
<a href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</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,26 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>tuple/push_front.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>tuple/push_front.hpp</b> header
defines a macro to append an element to the beginning of an <i>tuple</i>.</div>
<h4>Usage</h4>
<div class="code"> #include <b>&lt;boost/preprocessor/tuple/push_front.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/tuple_push_front.html">BOOST_PP_TUPLE_PUSH_FRONT</a>
<a href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</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

@ -9,9 +9,9 @@
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/tuple_rem.html">BOOST_PP_TUPLE_REM</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
<li><a href="../../ref/tuple_rem.html">BOOST_PP_TUPLE_REM</a> (v)<br>
</li>
<li><a href="../../ref/tuple_rem_ctor.html">BOOST_PP_TUPLE_REM_CTOR</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
<li><a href="../../ref/tuple_rem_ctor.html">BOOST_PP_TUPLE_REM_CTOR</a> (v)<br>
</li>
</ul>
<hr size="1">

View File

@ -1,27 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>tuple/remove.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>tuple/remove.hpp</b> header defines
macros to remove an element from an <i>array</i>. </div>
<h4>Usage</h4>
<div class="code"> #include <b>&lt;boost/preprocessor/tuple/remove.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/tuple_remove.html">BOOST_PP_TUPLE_REMOVE</a> <a href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="../../ref/tuple_remove_d.html">BOOST_PP_TUPLE_REMOVE_D</a> <a
href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</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,28 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>tuple/replace.hpp</title>
<link rel="stylesheet" type="text/css" href="../../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>tuple/replace.hpp</b> header
defines macros to replace an element in an <i>array</i>.</div>
<h4>Usage</h4>
<div class="code"> #include <b>&lt;boost/preprocessor/tuple/replace.hpp&gt;</b>
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/tuple_replace.html">BOOST_PP_TUPLE_REPLACE</a> <a
href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="../../ref/tuple_replace_d.html">BOOST_PP_TUPLE_REPLACE_D</a>
<a href="../../topics/variadic_macros.html#VNotation">(v)</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</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

@ -9,7 +9,7 @@
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/tuple_reverse.html">BOOST_PP_TUPLE_REVERSE</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
<li><a href="../../ref/tuple_reverse.html">BOOST_PP_TUPLE_REVERSE</a> (v)<br>
</li>
</ul>
<hr size="1">

View File

@ -10,12 +10,12 @@
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/tuple_size.html">BOOST_PP_TUPLE_SIZE</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
<li><a href="../../ref/tuple_size.html">BOOST_PP_TUPLE_SIZE</a> (v)<br>
</li>
</ul>
<hr size="1">
<div style="margin-left: 0px;">
<i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i>
<i></i><i><EFBFBD> Copyright Edward Diener 2011</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See

View File

@ -10,12 +10,12 @@
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/tuple_to_array.html">BOOST_PP_TUPLE_TO_ARRAY</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
<li><a href="../../ref/tuple_to_array.html">BOOST_PP_TUPLE_TO_ARRAY</a> (v)<br>
</li>
</ul>
<hr size="1">
<div style="margin-left: 0px;">
<i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i>
<i></i><i><EFBFBD> Copyright Edward Diener 2011</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See

View File

@ -9,7 +9,7 @@
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/tuple_to_list.html">BOOST_PP_TUPLE_TO_LIST</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><sup><br>
<li><a href="../../ref/tuple_to_list.html">BOOST_PP_TUPLE_TO_LIST</a> (v)<sup><br>
</sup></li>
</ul>
<hr size="1">

View File

@ -15,7 +15,7 @@
</h4>
<ul>
<li>
<a href="../../ref/tuple_to_seq.html">BOOST_PP_TUPLE_TO_SEQ</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
<a href="../../ref/tuple_to_seq.html">BOOST_PP_TUPLE_TO_SEQ</a> (v)<br>
</li>
</ul>
<hr size="1">

View File

@ -13,16 +13,16 @@
</div>
<h4>Includes</h4>
<ul>
<li><a href="variadic/elem.html">&lt;boost/preprocessor/variadic/elem.hpp&gt;</a> <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="variadic/size.html">&lt;boost/preprocessor/variadic/size.hpp&gt;</a> <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="variadic/to_array.html">&lt;boost/preprocessor/variadic/to_array.hpp&gt;</a> <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="variadic/to_list.html">&lt;boost/preprocessor/variadic/to_list.hpp&gt;</a> <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="variadic/to_seq.html">&lt;boost/preprocessor/variadic/to_seq.hpp&gt;</a> <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="variadic/to_tuple.html">&lt;boost/preprocessor/variadic/to_tuple.hpp&gt;</a> <a href="../topics/variadic_macros.html#VNotation" target="_self">(v)</a></li>
<li><a href="variadic/elem.html">&lt;boost/preprocessor/variadic/elem.hpp&gt;</a> (v)</li>
<li><a href="variadic/size.html">&lt;boost/preprocessor/variadic/size.hpp&gt;</a> (v)</li>
<li><a href="variadic/to_array.html">&lt;boost/preprocessor/variadic/to_array.hpp&gt;</a> (v)</li>
<li><a href="variadic/to_list.html">&lt;boost/preprocessor/variadic/to_list.hpp&gt;</a> (v)</li>
<li><a href="variadic/to_seq.html">&lt;boost/preprocessor/variadic/to_seq.hpp&gt;</a> (v)</li>
<li><a href="variadic/to_tuple.html">&lt;boost/preprocessor/variadic/to_tuple.hpp&gt;</a> (v)</li>
</ul>
<hr size="1">
<div style="margin-left: 0px;">
<i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i>
<i></i><i><EFBFBD> Copyright Edward Diener 2011</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See

View File

@ -14,12 +14,12 @@
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/variadic_elem.html">BOOST_PP_VARIADIC_ELEM</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
<li><a href="../../ref/variadic_elem.html">BOOST_PP_VARIADIC_ELEM</a> (v)<br>
</li>
</ul>
<hr size="1">
<div style="margin-left: 0px;">
<i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i>
<i></i><i><EFBFBD> Copyright Edward Diener 2011</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See

View File

@ -10,12 +10,12 @@
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/variadic_size.html">BOOST_PP_VARIADIC_SIZE</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
<li><a href="../../ref/variadic_size.html">BOOST_PP_VARIADIC_SIZE</a> (v)<br>
</li>
</ul>
<hr size="1">
<div style="margin-left: 0px;">
<i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i>
<i></i><i><EFBFBD> Copyright Edward Diener 2011</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See

View File

@ -10,12 +10,12 @@
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/variadic_to_array.html">BOOST_PP_VARIADIC_TO_ARRAY</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
<li><a href="../../ref/variadic_to_array.html">BOOST_PP_VARIADIC_TO_ARRAY</a> (v)<br>
</li>
</ul>
<hr size="1">
<div style="margin-left: 0px;">
<i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i>
<i></i><i><EFBFBD> Copyright Edward Diener 2011</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See

View File

@ -10,12 +10,12 @@
</div>
<h4>Contents</h4>
<ul>
<li><a href="../../ref/variadic_to_list.html">BOOST_PP_VARIADIC_TO_LIST</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
<li><a href="../../ref/variadic_to_list.html">BOOST_PP_VARIADIC_TO_LIST</a> (v)<br>
</li>
</ul>
<hr size="1">
<div style="margin-left: 0px;">
<i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i>
<i></i><i><EFBFBD> Copyright Edward Diener 2011</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See

View File

@ -15,12 +15,12 @@
</h4>
<ul>
<li>
<a href="../../ref/variadic_to_seq.html">BOOST_PP_VARIADIC_TO_SEQ</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
<a href="../../ref/variadic_to_seq.html">BOOST_PP_VARIADIC_TO_SEQ</a> (v)<br>
</li>
</ul>
<hr size="1">
<div style="margin-left: 0px;">
<i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i>
<i></i><i><EFBFBD> Copyright Edward Diener 2011</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See

View File

@ -16,12 +16,12 @@
</h4>
<ul>
<li>
<a href="../../ref/variadic_to_tuple.html">BOOST_PP_VARIADIC_TO_TUPLE</a> <a href="../../topics/variadic_macros.html#VNotation" target="_self">(v)</a><br>
<a href="../../ref/variadic_to_tuple.html">BOOST_PP_VARIADIC_TO_TUPLE</a> (v)<br>
</li>
</ul>
<hr size="1">
<div style="margin-left: 0px;">
<i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i>
<i></i><i><EFBFBD> Copyright Edward Diener 2011</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See

View File

@ -1,319 +1,304 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>ref.html</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<base target="desc">
<link rel="stylesheet" type="text/css" href="styles.css">
<base target="desc">
</head>
<body>
<h4> Reference <small><a href="contents.html" target="index">[back]</a></small>
</h4>
<ul>
<!-- A -->
<li><a href="ref/add.html">ADD</a></li>
<li><a href="ref/add_d.html">ADD_D</a></li>
<li><a href="ref/and.html">AND</a></li>
<li><a href="ref/apply.html">APPLY</a></li>
<li><a href="ref/array_data.html">ARRAY_DATA</a></li>
<li><a href="ref/array_elem.html">ARRAY_ELEM</a></li>
<li><a href="ref/array_enum.html">ARRAY_ENUM</a></li>
<li><a href="ref/array_insert.html">ARRAY_INSERT</a></li>
<li><a href="ref/array_insert_d.html">ARRAY_INSERT_D</a></li>
<li><a href="ref/array_pop_back.html">ARRAY_POP_BACK</a></li>
<li><a href="ref/array_pop_back_z.html">ARRAY_POP_BACK_Z</a></li>
<li><a href="ref/array_pop_front.html">ARRAY_POP_FRONT</a></li>
<li><a href="ref/array_pop_front_z.html">ARRAY_POP_FRONT_Z</a></li>
<li><a href="ref/array_push_back.html">ARRAY_PUSH_BACK</a></li>
<li><a href="ref/array_push_front.html">ARRAY_PUSH_FRONT</a></li>
<li><a href="ref/array_remove.html">ARRAY_REMOVE</a></li>
<li><a href="ref/array_remove_d.html">ARRAY_REMOVE_D</a></li>
<li><a href="ref/array_replace.html">ARRAY_REPLACE</a></li>
<li><a href="ref/array_replace_d.html">ARRAY_REPLACE_D</a></li>
<li><a href="ref/array_reverse.html">ARRAY_REVERSE</a></li>
<li><a href="ref/array_size.html">ARRAY_SIZE</a></li>
<li><a href="ref/array_to_list.html">ARRAY_TO_LIST</a></li>
<li><a href="ref/array_to_seq.html">ARRAY_TO_SEQ</a></li>
<li><a href="ref/array_to_tuple.html">ARRAY_TO_TUPLE</a></li>
<li><a href="ref/assert.html">ASSERT</a></li>
<li><a href="ref/assert_msg.html">ASSERT_MSG</a></li>
<li><a href="ref/assign_slot.html">ASSIGN_SLOT</a></li>
<!-- B -->
<li><a href="ref/bitand.html">BITAND</a></li>
<li><a href="ref/bitnor.html">BITNOR</a></li>
<li><a href="ref/bitor.html">BITOR</a></li>
<li><a href="ref/bitxor.html">BITXOR</a></li>
<li><a href="ref/bool.html">BOOL</a></li>
<!-- C -->
<li><a href="ref/cat.html">CAT</a></li>
<li><a href="ref/comma.html">COMMA</a></li>
<li><a href="ref/comma_if.html">COMMA_IF</a></li>
<li><a href="ref/compl.html">COMPL</a></li>
<li><a href="ref/config_extended_line_info.html">CONFIG_EXTENDED_LINE_INFO</a></li>
<li><a href="ref/counter.html">COUNTER</a></li>
<!-- D -->
<li><a href="ref/dec.html">DEC</a></li>
<li><a href="ref/deduce_d.html">DEDUCE_D</a></li>
<li><a href="ref/deduce_r.html">DEDUCE_R</a></li>
<li><a href="ref/deduce_z.html">DEDUCE_Z</a></li>
<li><a href="ref/div.html">DIV</a></li>
<li><a href="ref/div_d.html">DIV_D</a></li>
<!-- E -->
<li><a href="ref/empty.html">EMPTY</a></li>
<li><a href="ref/enum.html">ENUM</a></li>
<li><a href="ref/enum_binary_params.html">ENUM_BINARY_PARAMS</a></li>
<li><a href="ref/enum_binary_params_z.html">ENUM_BINARY_PARAMS_Z</a></li>
<li><a href="ref/enum_params.html">ENUM_PARAMS</a></li>
<li><a href="ref/enum_params_with_a_default.html">ENUM_PARAMS_WITH_A_DEFAULT*</a></li>
<li><a href="ref/enum_params_with_defaults.html">ENUM_PARAMS_WITH_DEFAULTS*</a></li>
<li><a href="ref/enum_params_z.html">ENUM_PARAMS_Z</a></li>
<li><a href="ref/enum_shifted.html">ENUM_SHIFTED</a></li>
<li><a href="ref/esbp.html">ENUM_SHIFTED_BINARY_PARAMS</a></li>
<li><a href="ref/esbpz.html">ENUM_SHIFTED_BINARY_PARAMS_Z</a></li>
<li><a href="ref/enum_shifted_params.html">ENUM_SHIFTED_PARAMS</a></li>
<li><a href="ref/enum_shifted_params_z.html">ENUM_SHIFTED_PARAMS_Z</a></li>
<li><a href="ref/enum_shifted_z.html">ENUM_SHIFTED_<i>z</i></a></li>
<li><a href="ref/enum_trailing.html">ENUM_TRAILING</a></li>
<li><a href="ref/etbp.html">ENUM_TRAILING_BINARY_PARAMS</a></li>
<li><a href="ref/etbpz.html">ENUM_TRAILING_BINARY_PARAMS_Z</a></li>
<li><a href="ref/enum_trailing_params.html">ENUM_TRAILING_PARAMS</a></li>
<li><a href="ref/enum_trailing_params_z.html">ENUM_TRAILING_PARAMS_Z</a></li>
<li><a href="ref/enum_trailing_z.html">ENUM_TRAILING_<i>z</i></a></li>
<li><a href="ref/enum_z.html">ENUM_<i>z</i></a></li>
<li><a href="ref/equal.html">EQUAL</a></li>
<li><a href="ref/equal_d.html">EQUAL_D*</a></li>
<li><a href="ref/expand.html">EXPAND</a></li>
<li><a href="ref/expr_if.html">EXPR_IF</a></li>
<li><a href="ref/expr_iif.html">EXPR_IIF</a></li>
<!-- F -->
<li><a href="ref/filename_x.html">FILENAME_<i>x</i></a></li>
<li><a href="ref/for.html">FOR</a></li>
<li><a href="ref/for_r.html">FOR_<i>r</i></a></li>
<li><a href="ref/frame_finish.html">FRAME_FINISH</a></li>
<li><a href="ref/frame_flags.html">FRAME_FLAGS</a></li>
<li><a href="ref/frame_iteration.html">FRAME_ITERATION</a></li>
<li><a href="ref/frame_start.html">FRAME_START</a></li>
<!-- G -->
<li><a href="ref/greater.html">GREATER</a></li>
<li><a href="ref/greater_d.html">GREATER_D</a></li>
<li><a href="ref/greater_equal.html">GREATER_EQUAL</a></li>
<li><a href="ref/greater_equal_d.html">GREATER_EQUAL_D</a></li>
<!-- I -->
<li><a href="ref/identity.html">IDENTITY</a></li>
<li><a href="ref/identity_n.html">IDENTITY_N</a></li>
<li><a href="ref/if.html">IF</a></li>
<li><a href="ref/iif.html">IIF</a></li>
<li><a href="ref/inc.html">INC</a></li>
<li><a href="ref/include_self.html">INCLUDE_SELF</a></li>
<li><a href="ref/indirect_self.html">INDIRECT_SELF</a></li>
<li><a href="ref/intercept.html">INTERCEPT</a></li>
<li><a href="ref/is_begin_parens.html">IS_BEGIN_PARENS</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/is_iterating.html">IS_ITERATING</a></li>
<li><a href="ref/is_selfish.html">IS_SELFISH</a></li>
<li><a href="ref/iterate.html">ITERATE</a></li>
<li><a href="ref/iteration.html">ITERATION</a></li>
<li><a href="ref/iteration_depth.html">ITERATION_DEPTH</a></li>
<li><a href="ref/iteration_finish.html">ITERATION_FINISH</a></li>
<li><a href="ref/iteration_flags.html">ITERATION_FLAGS</a></li>
<li><a href="ref/iteration_limits.html">ITERATION_LIMITS</a></li>
<li><a href="ref/iteration_params_x.html">ITERATION_PARAMS_<i>x</i></a></li>
<li><a href="ref/iteration_start.html">ITERATION_START</a></li>
<!-- L -->
<li><a href="ref/less.html">LESS</a></li>
<li><a href="ref/less_d.html">LESS_D</a></li>
<li><a href="ref/less_equal.html">LESS_EQUAL</a></li>
<li><a href="ref/less_equal_d.html">LESS_EQUAL_D</a></li>
<li><a href="ref/limit_dim.html">LIMIT_DIM</a></li>
<li><a href="ref/limit_for.html">LIMIT_FOR</a></li>
<li><a href="ref/limit_iteration.html">LIMIT_ITERATION</a></li>
<li><a href="ref/limit_iteration_dim.html">LIMIT_ITERATION_DIM</a></li>
<li><a href="ref/limit_mag.html">LIMIT_MAG</a></li>
<li><a href="ref/limit_repeat.html">LIMIT_REPEAT</a></li>
<li><a href="ref/limit_seq.html">LIMIT_SEQ</a></li>
<li><a href="ref/limit_slot_count.html">LIMIT_SLOT_COUNT</a></li>
<li><a href="ref/limit_slot_sig.html">LIMIT_SLOT_SIG</a></li>
<li><a href="ref/limit_tuple.html">LIMIT_TUPLE</a></li>
<li><a href="ref/limit_variadic.html">LIMIT_VARIADIC</a></li>
<li><a href="ref/limit_while.html">LIMIT_WHILE</a></li>
<li><a href="ref/line.html">LINE</a></li>
<li><a href="ref/list_append.html">LIST_APPEND</a></li>
<li><a href="ref/list_append_d.html">LIST_APPEND_D</a></li>
<li><a href="ref/list_at.html">LIST_AT</a></li>
<li><a href="ref/list_at_d.html">LIST_AT_D</a></li>
<li><a href="ref/list_cat.html">LIST_CAT</a></li>
<li><a href="ref/list_cat_d.html">LIST_CAT_D</a></li>
<li><a href="ref/list_cons.html">LIST_CONS*</a></li>
<li><a href="ref/list_enum.html">LIST_ENUM</a></li>
<li><a href="ref/list_enum_r.html">LIST_ENUM_R</a></li>
<li><a href="ref/list_filter.html">LIST_FILTER</a></li>
<li><a href="ref/list_filter_d.html">LIST_FILTER_D</a></li>
<li><a href="ref/list_first.html">LIST_FIRST</a></li>
<li><a href="ref/list_first_n.html">LIST_FIRST_N</a></li>
<li><a href="ref/list_first_n_d.html">LIST_FIRST_N_D</a></li>
<li><a href="ref/list_fold_left.html">LIST_FOLD_LEFT</a></li>
<li><a href="ref/list_fold_left_2nd.html">LIST_FOLD_LEFT_2ND*</a></li>
<li><a href="ref/list_fold_left_2nd_d.html">LIST_FOLD_LEFT_2ND_D*</a></li>
<li><a href="ref/list_fold_left_d.html">LIST_FOLD_LEFT_<i>d</i></a></li>
<li><a href="ref/list_fold_left_d_old.html">LIST_FOLD_LEFT_D*</a></li>
<li><a href="ref/list_fold_right.html">LIST_FOLD_RIGHT</a></li>
<li><a href="ref/list_fold_right_2nd.html">LIST_FOLD_RIGHT_2ND*</a></li>
<li><a href="ref/list_fold_right_2nd_d.html">LIST_FOLD_RIGHT_2ND_D*</a></li>
<li><a href="ref/list_fold_right_d.html">LIST_FOLD_RIGHT_<i>d</i></a></li>
<li><a href="ref/list_fold_right_d_old.html">LIST_FOLD_RIGHT_D*</a></li>
<li><a href="ref/list_for_each.html">LIST_FOR_EACH</a></li>
<li><a href="ref/list_for_each_i.html">LIST_FOR_EACH_I</a></li>
<li><a href="ref/list_for_each_i_r.html">LIST_FOR_EACH_I_R</a></li>
<li><a href="ref/list_for_each_product.html">LIST_FOR_EACH_PRODUCT</a></li>
<li><a href="ref/list_for_each_product_r.html">LIST_FOR_EACH_PRODUCT_R</a></li>
<li><a href="ref/list_for_each_r.html">LIST_FOR_EACH_R</a></li>
<li><a href="ref/list_is_cons.html">LIST_IS_CONS</a></li>
<li><a href="ref/list_is_nil.html">LIST_IS_NIL</a></li>
<li><a href="ref/list_nil.html">LIST_NIL*</a></li>
<li><a href="ref/list_rest.html">LIST_REST</a></li>
<li><a href="ref/list_rest_n.html">LIST_REST_N</a></li>
<li><a href="ref/list_rest_n_d.html">LIST_REST_N_D</a></li>
<li><a href="ref/list_reverse.html">LIST_REVERSE</a></li>
<li><a href="ref/list_reverse_d.html">LIST_REVERSE_D</a></li>
<li><a href="ref/list_size.html">LIST_SIZE</a></li>
<li><a href="ref/list_size_d.html">LIST_SIZE_D</a></li>
<li><a href="ref/list_to_array.html">LIST_TO_ARRAY</a></li>
<li><a href="ref/list_to_array_d.html">LIST_TO_ARRAY_D</a></li>
<li><a href="ref/list_to_seq.html">LIST_TO_SEQ</a></li>
<li><a href="ref/list_to_seq_r.html">LIST_TO_SEQ_R</a></li>
<li><a href="ref/list_to_tuple.html">LIST_TO_TUPLE</a></li>
<li><a href="ref/list_to_tuple_r.html">LIST_TO_TUPLE_R</a></li>
<li><a href="ref/list_transform.html">LIST_TRANSFORM</a></li>
<li><a href="ref/list_transform_d.html">LIST_TRANSFORM_D</a></li>
<li><a href="ref/local_iterate.html">LOCAL_ITERATE</a></li>
<li><a href="ref/local_limits.html">LOCAL_LIMITS</a></li>
<li><a href="ref/local_macro.html">LOCAL_MACRO</a></li>
<li><a href="ref/lparen.html">LPAREN</a></li>
<li><a href="ref/lparen_if.html">LPAREN_IF</a></li>
<!-- M -->
<li><a href="ref/max.html">MAX</a></li>
<li><a href="ref/max_d.html">MAX_D</a></li>
<li><a href="ref/min.html">MIN</a></li>
<li><a href="ref/min_d.html">MIN_D</a></li>
<li><a href="ref/mod.html">MOD</a></li>
<li><a href="ref/mod_d.html">MOD_D</a></li>
<li><a href="ref/mul.html">MUL</a></li>
<li><a href="ref/mul_d.html">MUL_D</a></li>
<!-- N -->
<li><a href="ref/nil.html">NIL</a></li>
<li><a href="ref/nor.html">NOR</a></li>
<li><a href="ref/not.html">NOT</a></li>
<li><a href="ref/not_equal.html">NOT_EQUAL</a></li>
<li><a href="ref/not_equal_d.html">NOT_EQUAL_D*</a></li>
<!-- O -->
<li><a href="ref/or.html">OR</a></li>
<li><a href="ref/overload.html">OVERLOAD</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<!-- R -->
<li><a href="ref/relative_finish.html">RELATIVE_FINISH</a></li>
<li><a href="ref/relative_flags.html">RELATIVE_FLAGS</a></li>
<li><a href="ref/relative_iteration.html">RELATIVE_ITERATION</a></li>
<li><a href="ref/relative_start.html">RELATIVE_START</a></li>
<li><a href="ref/remove_parens.html">REMOVE_PARENS</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/repeat.html">REPEAT</a></li>
<li><a href="ref/repeat_1st.html">REPEAT_1ST*</a></li>
<li><a href="ref/repeat_2nd.html">REPEAT_2ND*</a></li>
<li><a href="ref/repeat_3rd.html">REPEAT_3RD*</a></li>
<li><a href="ref/repeat_from_to.html">REPEAT_FROM_TO</a></li>
<li><a href="ref/repeat_from_to_1st.html">REPEAT_FROM_TO_1ST*</a></li>
<li><a href="ref/repeat_from_to_2nd.html">REPEAT_FROM_TO_2ND*</a></li>
<li><a href="ref/repeat_from_to_3rd.html">REPEAT_FROM_TO_3RD*</a></li>
<li><a href="ref/repeat_from_to_d.html">REPEAT_FROM_TO_D</a></li>
<li><a href="ref/repeat_from_to_d_z.html">REPEAT_FROM_TO_D_<i>z</i></a></li>
<li><a href="ref/repeat_from_to_z.html">REPEAT_FROM_TO_<i>z</i></a></li>
<li><a href="ref/repeat_z.html">REPEAT_<i>z</i></a></li>
<li><a href="ref/rparen.html">RPAREN</a></li>
<li><a href="ref/rparen_if.html">RPAREN_IF</a></li>
<!-- S -->
<li><a href="ref/seq_cat.html">SEQ_CAT</a></li>
<li><a href="ref/seq_cat_s.html">SEQ_CAT_S</a></li>
<li><a href="ref/seq_elem.html">SEQ_ELEM</a></li>
<li><a href="ref/seq_enum.html">SEQ_ENUM</a></li>
<li><a href="ref/seq_filter.html">SEQ_FILTER</a></li>
<li><a href="ref/seq_filter_s.html">SEQ_FILTER_S</a></li>
<li><a href="ref/seq_first_n.html">SEQ_FIRST_N</a></li>
<li><a href="ref/seq_fold_left.html">SEQ_FOLD_LEFT</a></li>
<li><a href="ref/seq_fold_left_s.html">SEQ_FOLD_LEFT_<i>s</i></a></li>
<li><a href="ref/seq_fold_right.html">SEQ_FOLD_RIGHT</a></li>
<li><a href="ref/seq_fold_right_s.html">SEQ_FOLD_RIGHT_<i>s</i></a></li>
<li><a href="ref/seq_for_each.html">SEQ_FOR_EACH</a></li>
<li><a href="ref/seq_for_each_i.html">SEQ_FOR_EACH_I</a></li>
<li><a href="ref/seq_for_each_i_r.html">SEQ_FOR_EACH_I_R</a></li>
<li><a href="ref/seq_for_each_product.html">SEQ_FOR_EACH_PRODUCT</a></li>
<li><a href="ref/seq_for_each_product_r.html">SEQ_FOR_EACH_PRODUCT_R</a></li>
<li><a href="ref/seq_for_each_r.html">SEQ_FOR_EACH_R</a></li>
<li><a href="ref/seq_head.html">SEQ_HEAD</a></li>
<li><a href="ref/seq_insert.html">SEQ_INSERT</a></li>
<li><a href="ref/seq_nil.html">SEQ_NIL</a></li>
<li><a href="ref/seq_pop_back.html">SEQ_POP_BACK</a></li>
<li><a href="ref/seq_pop_front.html">SEQ_POP_FRONT</a></li>
<li><a href="ref/seq_push_back.html">SEQ_PUSH_BACK</a></li>
<li><a href="ref/seq_push_front.html">SEQ_PUSH_FRONT</a></li>
<li><a href="ref/seq_remove.html">SEQ_REMOVE</a></li>
<li><a href="ref/seq_replace.html">SEQ_REPLACE</a></li>
<li><a href="ref/seq_rest_n.html">SEQ_REST_N</a></li>
<li><a href="ref/seq_reverse.html">SEQ_REVERSE</a></li>
<li><a href="ref/seq_reverse_s.html">SEQ_REVERSE_S</a></li>
<li><a href="ref/seq_size.html">SEQ_SIZE</a></li>
<li><a href="ref/seq_subseq.html">SEQ_SUBSEQ</a></li>
<li><a href="ref/seq_tail.html">SEQ_TAIL</a></li>
<li><a href="ref/seq_to_array.html">SEQ_TO_ARRAY</a></li>
<li><a href="ref/seq_to_list.html">SEQ_TO_LIST</a></li>
<li><a href="ref/seq_to_tuple.html">SEQ_TO_TUPLE</a></li>
<li><a href="ref/seq_transform.html">SEQ_TRANSFORM</a></li>
<li><a href="ref/seq_transform_s.html">SEQ_TRANSFORM_S</a></li>
<li><a href="ref/slot.html">SLOT</a></li>
<li><a href="ref/stringize.html">STRINGIZE</a></li>
<li><a href="ref/sub.html">SUB</a></li>
<li><a href="ref/sub_d.html">SUB_D</a></li>
<!-- T -->
<li><a href="ref/tuple_eat.html">TUPLE_EAT</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_elem.html">TUPLE_ELEM</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_enum.html">TUPLE_ENUM</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><span style="color: gray;"></span><a href="ref/tuple_insert.html">TUPLE_INSERT</a>
<a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_insert_d.html">TUPLE_INSERT_D</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_pop_back.html">TUPLE_POP_BACK</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_pop_back_z.html">TUPLE_POP_BACK_Z</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_pop_front.html">TUPLE_POP_FRONT</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_pop_front_z.html">TUPLE_POP_FRONT_Z</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_push_back.html">TUPLE_PUSH_BACK</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_push_front.html">TUPLE_PUSH_FRONT</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_rem.html">TUPLE_REM</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_rem_ctor.html">TUPLE_REM_CTOR</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_remove.html">TUPLE_REMOVE</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_remove_d.html">TUPLE_REMOVE_D</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_replace.html">TUPLE_REPLACE</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_replace_d.html">TUPLE_REPLACE_D</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_reverse.html">TUPLE_REVERSE</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_size.html">TUPLE_SIZE</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_to_array.html">TUPLE_TO_ARRAY</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_to_list.html">TUPLE_TO_LIST</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/tuple_to_seq.html">TUPLE_TO_SEQ</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<!-- U -->
<li><a href="ref/update_counter.html">UPDATE_COUNTER</a></li>
<!-- V -->
<li><a href="ref/value.html">VALUE</a></li>
<li><a href="ref/variadics.html">VARIADICS</a></li>
<li><a href="ref/variadic_elem.html">VARIADIC_ELEM</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/variadic_seq_to_seq.html">VARIADIC_SEQ_TO_SEQ</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/variadic_size.html">VARIADIC_SIZE</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/variadic_to_array.html">VARIADIC_TO_ARRAY</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/variadic_to_list.html">VARIADIC_TO_LIST</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/variadic_to_seq.html">VARIADIC_TO_SEQ</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<li><a href="ref/variadic_to_tuple.html">VARIADIC_TO_TUPLE</a> <a href="topics/variadic_macros.html#VNotation">(v)</a></li>
<!-- W -->
<li><a href="ref/while.html">WHILE</a></li>
<li><a href="ref/while_d.html">WHILE_<i>d</i></a></li>
<li><a href="ref/wstringize.html">WSTRINGIZE</a></li>
<!-- X -->
<li><a href="ref/xor.html">XOR</a></li>
</ul>
<!--
© Copyright Housemarque Oy 2002© 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)-->
<h4> Reference <small><a href="contents.html" target="index">[back]</a></small>
</h4>
<ul>
<!-- A -->
<li><a href="ref/add.html">ADD</a></li>
<li><a href="ref/add_d.html">ADD_D</a></li>
<li><a href="ref/and.html">AND</a></li>
<li><a href="ref/apply.html">APPLY</a></li>
<li><a href="ref/array_data.html">ARRAY_DATA</a></li>
<li><a href="ref/array_elem.html">ARRAY_ELEM</a></li>
<li><a href="ref/array_enum.html">ARRAY_ENUM</a></li>
<li><a href="ref/array_insert.html">ARRAY_INSERT</a></li>
<li><a href="ref/array_insert_d.html">ARRAY_INSERT_D</a></li>
<li><a href="ref/array_pop_back.html">ARRAY_POP_BACK</a></li>
<li><a href="ref/array_pop_back_z.html">ARRAY_POP_BACK_Z</a></li>
<li><a href="ref/array_pop_front.html">ARRAY_POP_FRONT</a></li>
<li><a href="ref/array_pop_front_z.html">ARRAY_POP_FRONT_Z</a></li>
<li><a href="ref/array_push_back.html">ARRAY_PUSH_BACK</a></li>
<li><a href="ref/array_push_front.html">ARRAY_PUSH_FRONT</a></li>
<li><a href="ref/array_remove.html">ARRAY_REMOVE</a></li>
<li><a href="ref/array_remove_d.html">ARRAY_REMOVE_D</a></li>
<li><a href="ref/array_replace.html">ARRAY_REPLACE</a></li>
<li><a href="ref/array_replace_d.html">ARRAY_REPLACE_D</a></li>
<li><a href="ref/array_reverse.html">ARRAY_REVERSE</a></li>
<li><a href="ref/array_size.html">ARRAY_SIZE</a></li>
<li><a href="ref/array_to_list.html">ARRAY_TO_LIST</a></li>
<li><a href="ref/array_to_seq.html">ARRAY_TO_SEQ</a></li>
<li><a href="ref/array_to_tuple.html">ARRAY_TO_TUPLE</a></li>
<li><a href="ref/assert.html">ASSERT</a></li>
<li><a href="ref/assert_msg.html">ASSERT_MSG</a></li>
<li><a href="ref/assign_slot.html">ASSIGN_SLOT</a></li>
<!-- B -->
<li><a href="ref/bitand.html">BITAND</a></li>
<li><a href="ref/bitnor.html">BITNOR</a></li>
<li><a href="ref/bitor.html">BITOR</a></li>
<li><a href="ref/bitxor.html">BITXOR</a></li>
<li><a href="ref/bool.html">BOOL</a></li>
<!-- C -->
<li><a href="ref/cat.html">CAT</a></li>
<li><a href="ref/comma.html">COMMA</a></li>
<li><a href="ref/comma_if.html">COMMA_IF</a></li>
<li><a href="ref/compl.html">COMPL</a></li>
<li><a href="ref/config_extended_line_info.html">CONFIG_EXTENDED_LINE_INFO</a></li>
<li><a href="ref/counter.html">COUNTER</a></li>
<!-- D -->
<li><a href="ref/dec.html">DEC</a></li>
<li><a href="ref/deduce_d.html">DEDUCE_D</a></li>
<li><a href="ref/deduce_r.html">DEDUCE_R</a></li>
<li><a href="ref/deduce_z.html">DEDUCE_Z</a></li>
<li><a href="ref/div.html">DIV</a></li>
<li><a href="ref/div_d.html">DIV_D</a></li>
<!-- E -->
<li><a href="ref/empty.html">EMPTY</a></li>
<li><a href="ref/enum.html">ENUM</a></li>
<li><a href="ref/enum_binary_params.html">ENUM_BINARY_PARAMS</a></li>
<li><a href="ref/enum_binary_params_z.html">ENUM_BINARY_PARAMS_Z</a></li>
<li><a href="ref/enum_params.html">ENUM_PARAMS</a></li>
<li><a href="ref/enum_params_with_a_default.html">ENUM_PARAMS_WITH_A_DEFAULT*</a></li>
<li><a href="ref/enum_params_with_defaults.html">ENUM_PARAMS_WITH_DEFAULTS*</a></li>
<li><a href="ref/enum_params_z.html">ENUM_PARAMS_Z</a></li>
<li><a href="ref/enum_shifted.html">ENUM_SHIFTED</a></li>
<li><a href="ref/esbp.html">ENUM_SHIFTED_BINARY_PARAMS</a></li>
<li><a href="ref/esbpz.html">ENUM_SHIFTED_BINARY_PARAMS_Z</a></li>
<li><a href="ref/enum_shifted_params.html">ENUM_SHIFTED_PARAMS</a></li>
<li><a href="ref/enum_shifted_params_z.html">ENUM_SHIFTED_PARAMS_Z</a></li>
<li><a href="ref/enum_shifted_z.html">ENUM_SHIFTED_<i>z</i></a></li>
<li><a href="ref/enum_trailing.html">ENUM_TRAILING</a></li>
<li><a href="ref/etbp.html">ENUM_TRAILING_BINARY_PARAMS</a></li>
<li><a href="ref/etbpz.html">ENUM_TRAILING_BINARY_PARAMS_Z</a></li>
<li><a href="ref/enum_trailing_params.html">ENUM_TRAILING_PARAMS</a></li>
<li><a href="ref/enum_trailing_params_z.html">ENUM_TRAILING_PARAMS_Z</a></li>
<li><a href="ref/enum_trailing_z.html">ENUM_TRAILING_<i>z</i></a></li>
<li><a href="ref/enum_z.html">ENUM_<i>z</i></a></li>
<li><a href="ref/equal.html">EQUAL</a></li>
<li><a href="ref/equal_d.html">EQUAL_D*</a></li>
<li><a href="ref/expand.html">EXPAND</a></li>
<li><a href="ref/expr_if.html">EXPR_IF</a></li>
<li><a href="ref/expr_iif.html">EXPR_IIF</a></li>
<!-- F -->
<li><a href="ref/filename_x.html">FILENAME_<i>x</i></a></li>
<li><a href="ref/for.html">FOR</a></li>
<li><a href="ref/for_r.html">FOR_<i>r</i></a></li>
<li><a href="ref/frame_finish.html">FRAME_FINISH</a></li>
<li><a href="ref/frame_flags.html">FRAME_FLAGS</a></li>
<li><a href="ref/frame_iteration.html">FRAME_ITERATION</a></li>
<li><a href="ref/frame_start.html">FRAME_START</a></li>
<!-- G -->
<li><a href="ref/greater.html">GREATER</a></li>
<li><a href="ref/greater_d.html">GREATER_D</a></li>
<li><a href="ref/greater_equal.html">GREATER_EQUAL</a></li>
<li><a href="ref/greater_equal_d.html">GREATER_EQUAL_D</a></li>
<!-- I -->
<li><a href="ref/identity.html">IDENTITY</a></li>
<li><a href="ref/if.html">IF</a></li>
<li><a href="ref/iif.html">IIF</a></li>
<li><a href="ref/inc.html">INC</a></li>
<li><a href="ref/include_self.html">INCLUDE_SELF</a></li>
<li><a href="ref/indirect_self.html">INDIRECT_SELF</a></li>
<li><a href="ref/intercept.html">INTERCEPT</a></li>
<li><a href="ref/is_iterating.html">IS_ITERATING</a></li>
<li><a href="ref/is_selfish.html">IS_SELFISH</a></li>
<li><a href="ref/iterate.html">ITERATE</a></li>
<li><a href="ref/iteration.html">ITERATION</a></li>
<li><a href="ref/iteration_depth.html">ITERATION_DEPTH</a></li>
<li><a href="ref/iteration_finish.html">ITERATION_FINISH</a></li>
<li><a href="ref/iteration_flags.html">ITERATION_FLAGS</a></li>
<li><a href="ref/iteration_limits.html">ITERATION_LIMITS</a></li>
<li><a href="ref/iteration_params_x.html">ITERATION_PARAMS_<i>x</i></a></li>
<li><a href="ref/iteration_start.html">ITERATION_START</a></li>
<!-- L -->
<li><a href="ref/less.html">LESS</a></li>
<li><a href="ref/less_d.html">LESS_D</a></li>
<li><a href="ref/less_equal.html">LESS_EQUAL</a></li>
<li><a href="ref/less_equal_d.html">LESS_EQUAL_D</a></li>
<li><a href="ref/limit_dim.html">LIMIT_DIM</a></li>
<li><a href="ref/limit_for.html">LIMIT_FOR</a></li>
<li><a href="ref/limit_iteration.html">LIMIT_ITERATION</a></li>
<li><a href="ref/limit_iteration_dim.html">LIMIT_ITERATION_DIM</a></li>
<li><a href="ref/limit_mag.html">LIMIT_MAG</a></li>
<li><a href="ref/limit_repeat.html">LIMIT_REPEAT</a></li>
<li><a href="ref/limit_seq.html">LIMIT_SEQ</a></li>
<li><a href="ref/limit_slot_count.html">LIMIT_SLOT_COUNT</a></li>
<li><a href="ref/limit_slot_sig.html">LIMIT_SLOT_SIG</a></li>
<li><a href="ref/limit_tuple.html">LIMIT_TUPLE</a></li>
<li><a href="ref/limit_variadic.html">LIMIT_VARIADIC</a></li>
<li><a href="ref/limit_while.html">LIMIT_WHILE</a></li>
<li><a href="ref/line.html">LINE</a></li>
<li><a href="ref/list_append.html">LIST_APPEND</a></li>
<li><a href="ref/list_append_d.html">LIST_APPEND_D</a></li>
<li><a href="ref/list_at.html">LIST_AT</a></li>
<li><a href="ref/list_at_d.html">LIST_AT_D</a></li>
<li><a href="ref/list_cat.html">LIST_CAT</a></li>
<li><a href="ref/list_cat_d.html">LIST_CAT_D</a></li>
<li><a href="ref/list_cons.html">LIST_CONS*</a></li>
<li><a href="ref/list_enum.html">LIST_ENUM</a></li>
<li><a href="ref/list_enum_r.html">LIST_ENUM_R</a></li>
<li><a href="ref/list_filter.html">LIST_FILTER</a></li>
<li><a href="ref/list_filter_d.html">LIST_FILTER_D</a></li>
<li><a href="ref/list_first.html">LIST_FIRST</a></li>
<li><a href="ref/list_first_n.html">LIST_FIRST_N</a></li>
<li><a href="ref/list_first_n_d.html">LIST_FIRST_N_D</a></li>
<li><a href="ref/list_fold_left.html">LIST_FOLD_LEFT</a></li>
<li><a href="ref/list_fold_left_2nd.html">LIST_FOLD_LEFT_2ND*</a></li>
<li><a href="ref/list_fold_left_2nd_d.html">LIST_FOLD_LEFT_2ND_D*</a></li>
<li><a href="ref/list_fold_left_d.html">LIST_FOLD_LEFT_<i>d</i></a></li>
<li><a href="ref/list_fold_left_d_old.html">LIST_FOLD_LEFT_D*</a></li>
<li><a href="ref/list_fold_right.html">LIST_FOLD_RIGHT</a></li>
<li><a href="ref/list_fold_right_2nd.html">LIST_FOLD_RIGHT_2ND*</a></li>
<li><a href="ref/list_fold_right_2nd_d.html">LIST_FOLD_RIGHT_2ND_D*</a></li>
<li><a href="ref/list_fold_right_d.html">LIST_FOLD_RIGHT_<i>d</i></a></li>
<li><a href="ref/list_fold_right_d_old.html">LIST_FOLD_RIGHT_D*</a></li>
<li><a href="ref/list_for_each.html">LIST_FOR_EACH</a></li>
<li><a href="ref/list_for_each_i.html">LIST_FOR_EACH_I</a></li>
<li><a href="ref/list_for_each_i_r.html">LIST_FOR_EACH_I_R</a></li>
<li><a href="ref/list_for_each_product.html">LIST_FOR_EACH_PRODUCT</a></li>
<li><a href="ref/list_for_each_product_r.html">LIST_FOR_EACH_PRODUCT_R</a></li>
<li><a href="ref/list_for_each_r.html">LIST_FOR_EACH_R</a></li>
<li><a href="ref/list_is_cons.html">LIST_IS_CONS</a></li>
<li><a href="ref/list_is_nil.html">LIST_IS_NIL</a></li>
<li><a href="ref/list_nil.html">LIST_NIL*</a></li>
<li><a href="ref/list_rest.html">LIST_REST</a></li>
<li><a href="ref/list_rest_n.html">LIST_REST_N</a></li>
<li><a href="ref/list_rest_n_d.html">LIST_REST_N_D</a></li>
<li><a href="ref/list_reverse.html">LIST_REVERSE</a></li>
<li><a href="ref/list_reverse_d.html">LIST_REVERSE_D</a></li>
<li><a href="ref/list_size.html">LIST_SIZE</a></li>
<li><a href="ref/list_size_d.html">LIST_SIZE_D</a></li>
<li><a href="ref/list_to_array.html">LIST_TO_ARRAY</a></li>
<li><a href="ref/list_to_array_d.html">LIST_TO_ARRAY_D</a></li>
<li><a href="ref/list_to_seq.html">LIST_TO_SEQ</a></li>
<li><a href="ref/list_to_seq_r.html">LIST_TO_SEQ_R</a></li>
<li><a href="ref/list_to_tuple.html">LIST_TO_TUPLE</a></li>
<li><a href="ref/list_to_tuple_r.html">LIST_TO_TUPLE_R</a></li>
<li><a href="ref/list_transform.html">LIST_TRANSFORM</a></li>
<li><a href="ref/list_transform_d.html">LIST_TRANSFORM_D</a></li>
<li><a href="ref/local_iterate.html">LOCAL_ITERATE</a></li>
<li><a href="ref/local_limits.html">LOCAL_LIMITS</a></li>
<li><a href="ref/local_macro.html">LOCAL_MACRO</a></li>
<li><a href="ref/lparen.html">LPAREN</a></li>
<li><a href="ref/lparen_if.html">LPAREN_IF</a></li>
<!-- M -->
<li><a href="ref/max.html">MAX</a></li>
<li><a href="ref/max_d.html">MAX_D</a></li>
<li><a href="ref/min.html">MIN</a></li>
<li><a href="ref/min_d.html">MIN_D</a></li>
<li><a href="ref/mod.html">MOD</a></li>
<li><a href="ref/mod_d.html">MOD_D</a></li>
<li><a href="ref/mul.html">MUL</a></li>
<li><a href="ref/mul_d.html">MUL_D</a></li>
<!-- N -->
<li><a href="ref/nil.html">NIL</a></li>
<li><a href="ref/nor.html">NOR</a></li>
<li><a href="ref/not.html">NOT</a></li>
<li><a href="ref/not_equal.html">NOT_EQUAL</a></li>
<li><a href="ref/not_equal_d.html">NOT_EQUAL_D*</a></li>
<!-- O -->
<li><a href="ref/or.html">OR</a></li>
<li><a href="ref/overload.html">OVERLOAD</a> (v)</li>
<!-- R -->
<li><a href="ref/relative_finish.html">RELATIVE_FINISH</a></li>
<li><a href="ref/relative_flags.html">RELATIVE_FLAGS</a></li>
<li><a href="ref/relative_iteration.html">RELATIVE_ITERATION</a></li>
<li><a href="ref/relative_start.html">RELATIVE_START</a></li>
<li><a href="ref/repeat.html">REPEAT</a></li>
<li><a href="ref/repeat_1st.html">REPEAT_1ST*</a></li>
<li><a href="ref/repeat_2nd.html">REPEAT_2ND*</a></li>
<li><a href="ref/repeat_3rd.html">REPEAT_3RD*</a></li>
<li><a href="ref/repeat_from_to.html">REPEAT_FROM_TO</a></li>
<li><a href="ref/repeat_from_to_1st.html">REPEAT_FROM_TO_1ST*</a></li>
<li><a href="ref/repeat_from_to_2nd.html">REPEAT_FROM_TO_2ND*</a></li>
<li><a href="ref/repeat_from_to_3rd.html">REPEAT_FROM_TO_3RD*</a></li>
<li><a href="ref/repeat_from_to_d.html">REPEAT_FROM_TO_D</a></li>
<li><a href="ref/repeat_from_to_d_z.html">REPEAT_FROM_TO_D_<i>z</i></a></li>
<li><a href="ref/repeat_from_to_z.html">REPEAT_FROM_TO_<i>z</i></a></li>
<li><a href="ref/repeat_z.html">REPEAT_<i>z</i></a></li>
<li><a href="ref/rparen.html">RPAREN</a></li>
<li><a href="ref/rparen_if.html">RPAREN_IF</a></li>
<!-- S -->
<li><a href="ref/seq_cat.html">SEQ_CAT</a></li>
<li><a href="ref/seq_cat_s.html">SEQ_CAT_S</a></li>
<li><a href="ref/seq_elem.html">SEQ_ELEM</a></li>
<li><a href="ref/seq_enum.html">SEQ_ENUM</a></li>
<li><a href="ref/seq_filter.html">SEQ_FILTER</a></li>
<li><a href="ref/seq_filter_s.html">SEQ_FILTER_S</a></li>
<li><a href="ref/seq_first_n.html">SEQ_FIRST_N</a></li>
<li><a href="ref/seq_fold_left.html">SEQ_FOLD_LEFT</a></li>
<li><a href="ref/seq_fold_left_s.html">SEQ_FOLD_LEFT_<i>s</i></a></li>
<li><a href="ref/seq_fold_right.html">SEQ_FOLD_RIGHT</a></li>
<li><a href="ref/seq_fold_right_s.html">SEQ_FOLD_RIGHT_<i>s</i></a></li>
<li><a href="ref/seq_for_each.html">SEQ_FOR_EACH</a></li>
<li><a href="ref/seq_for_each_i.html">SEQ_FOR_EACH_I</a></li>
<li><a href="ref/seq_for_each_i_r.html">SEQ_FOR_EACH_I_R</a></li>
<li><a href="ref/seq_for_each_product.html">SEQ_FOR_EACH_PRODUCT</a></li>
<li><a href="ref/seq_for_each_product_r.html">SEQ_FOR_EACH_PRODUCT_R</a></li>
<li><a href="ref/seq_for_each_r.html">SEQ_FOR_EACH_R</a></li>
<li><a href="ref/seq_head.html">SEQ_HEAD</a></li>
<li><a href="ref/seq_insert.html">SEQ_INSERT</a></li>
<li><a href="ref/seq_nil.html">SEQ_NIL</a></li>
<li><a href="ref/seq_pop_back.html">SEQ_POP_BACK</a></li>
<li><a href="ref/seq_pop_front.html">SEQ_POP_FRONT</a></li>
<li><a href="ref/seq_push_back.html">SEQ_PUSH_BACK</a></li>
<li><a href="ref/seq_push_front.html">SEQ_PUSH_FRONT</a></li>
<li><a href="ref/seq_remove.html">SEQ_REMOVE</a></li>
<li><a href="ref/seq_replace.html">SEQ_REPLACE</a></li>
<li><a href="ref/seq_rest_n.html">SEQ_REST_N</a></li>
<li><a href="ref/seq_reverse.html">SEQ_REVERSE</a></li>
<li><a href="ref/seq_reverse_s.html">SEQ_REVERSE_S</a></li>
<li><a href="ref/seq_size.html">SEQ_SIZE</a></li>
<li><a href="ref/seq_subseq.html">SEQ_SUBSEQ</a></li>
<li><a href="ref/seq_tail.html">SEQ_TAIL</a></li>
<li><a href="ref/seq_to_array.html">SEQ_TO_ARRAY</a></li>
<li><a href="ref/seq_to_list.html">SEQ_TO_LIST</a></li>
<li><a href="ref/seq_to_tuple.html">SEQ_TO_TUPLE</a></li>
<li><a href="ref/seq_transform.html">SEQ_TRANSFORM</a></li>
<li><a href="ref/seq_transform_s.html">SEQ_TRANSFORM_S</a></li>
<li><a href="ref/slot.html">SLOT</a></li>
<li><a href="ref/stringize.html">STRINGIZE</a></li>
<li><a href="ref/sub.html">SUB</a></li>
<li><a href="ref/sub_d.html">SUB_D</a></li>
<!-- T -->
<li><a href="ref/tuple_eat.html">TUPLE_EAT</a> (v)</li>
<li><a href="ref/tuple_elem.html">TUPLE_ELEM</a> (v)</li>
<li><a href="ref/tuple_enum.html">TUPLE_ENUM</a> (v)</li>
<li><a href="ref/tuple_rem.html">TUPLE_REM</a> (v)</li>
<li><a href="ref/tuple_rem_ctor.html">TUPLE_REM_CTOR</a> (v)</li>
<li><a href="ref/tuple_reverse.html">TUPLE_REVERSE</a> (v)</li>
<li><a href="ref/tuple_size.html">TUPLE_SIZE</a> (v)</li>
<li><a href="ref/tuple_to_array.html">TUPLE_TO_ARRAY</a> (v)</li>
<li><a href="ref/tuple_to_list.html">TUPLE_TO_LIST</a> (v)</li>
<li><a href="ref/tuple_to_seq.html">TUPLE_TO_SEQ</a> (v)</li>
<!-- U -->
<li><a href="ref/update_counter.html">UPDATE_COUNTER</a></li>
<!-- V -->
<li><a href="ref/value.html">VALUE</a></li>
<li><a href="ref/variadics.html">VARIADICS</a></li>
<li><a href="ref/variadic_elem.html">VARIADIC_ELEM</a> (v)</li>
<li><a href="ref/variadic_size.html">VARIADIC_SIZE</a> (v)</li>
<li><a href="ref/variadic_to_array.html">VARIADIC_TO_ARRAY</a> (v)</li>
<li><a href="ref/variadic_to_list.html">VARIADIC_TO_LIST</a> (v)</li>
<li><a href="ref/variadic_to_seq.html">VARIADIC_TO_SEQ</a> (v)</li>
<li><a href="ref/variadic_to_tuple.html">VARIADIC_TO_TUPLE</a> (v)</li>
<!-- W -->
<li><a href="ref/while.html">WHILE</a></li>
<li><a href="ref/while_d.html">WHILE_<i>d</i></a></li>
<li><a href="ref/wstringize.html">WSTRINGIZE</a></li>
<!-- X -->
<li><a href="ref/xor.html">XOR</a></li>
</ul>
<!--
© Copyright Housemarque Oy 2002
© 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>
</html>

View File

@ -34,7 +34,7 @@
It is more efficient, however, to use <b>BOOST_PP_ADD_D</b> in such a situation.
</div>
<div>
This macro is the most efficient when <i>x</i> is greater than or equal to <i>y</i>.&nbsp;
This macro is the most efficient when <i>x</i> is less than or equal to <i>y</i>.&nbsp;
However, the efficiency gain is not worth actually comparing the two arguments prior to invocation.&nbsp;
In other words, <i>x</i> should be the addend that is <i>most likely</i> to be the largest of the two operands.
</div>

View File

@ -34,7 +34,7 @@
If the sum of <i>x</i> and <i>y</i> is greater than <b>BOOST_PP_LIMIT_MAG</b>, the result is saturated to <b>BOOST_PP_LIMIT_MAG</b>.
</div>
<div>
This macro is the most efficient when <i>x</i> is greater than or equal to <i>y</i>.&nbsp;
This macro is the most efficient when <i>x</i> is less than or equal to <i>y</i>.&nbsp;
However, the efficiency gain is not worth actually comparing the two arguments prior to invocation.&nbsp;
In other words, <i>x</i> should be the addend that is <i>most likely</i> to be the largest of the two operands.
</div>

View File

@ -1,51 +1,59 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_ARRAY_POP_FRONT</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_POP_FRONT</b> macro
pops an element from the beginning of an <i>array</i>.</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_ARRAY_POP_FRONT</b>(<i>array</i>) </div>
<h4>Arguments</h4>
<dl>
<dt>array</dt>
<dd> The <i>array</i> to pop an element from. </dd>
</dl>
<h4>Remarks</h4>
<div> This macro returns <i>array</i> after removing the first
element.&nbsp; If <i>array</i> has no elements, the result of applying
this macro is undefined. </div>
<div> This macro uses <b>BOOST_PP_REPEAT</b> internally.&nbsp; Therefore,
to use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>,
see <b>BOOST_PP_ARRAY_POP_FRONT_Z</b> </div>
<h4>See Also</h4>
<ul>
<li><a href="array_pop_front_z.html">BOOST_PP_ARRAY_POP_FRONT_Z</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/array/pop_front.html">&lt;boost/preprocessor/array/pop_front.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/array/pop_front.html">boost/preprocessor/array/pop_front.hpp</a>&gt;
<head>
<title>BOOST_PP_ARRAY_POP_FRONT</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_ARRAY_POP_FRONT</b> macro pops an element from the end of an <i>array</i>.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_ARRAY_POP_FRONT</b>(<i>array</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>array</dt>
<dd>
The <i>array</i> to pop an element from.
</dd>
</dl>
<h4>Remarks</h4>
<div>
This macro returns <i>array</i> after removing the first element.&nbsp;
If <i>array</i> has no elements, the result of applying this macro is undefined.
</div>
<div>
This macro uses <b>BOOST_PP_REPEAT</b> internally.&nbsp;
Therefore, to use the <i>z</i> parameter passed from other macros that use
<b>BOOST_PP_REPEAT</b>, see <b>BOOST_PP_ARRAY_POP_FRONT_Z</b>
</div>
<h4>See Also</h4>
<ul>
<li><a href="array_pop_front_z.html">BOOST_PP_ARRAY_POP_FRONT_Z</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/array/pop_front.html">&lt;boost/preprocessor/array/pop_front.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/array/pop_front.html">boost/preprocessor/array/pop_front.hpp</a>&gt;
#define ARRAY (3, (a, b, c))
<a href="array_pop_front.html">BOOST_PP_ARRAY_POP_FRONT</a>(ARRAY) // expands to (2, (b, c))
</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<br>
</i><i><EFBFBD> Copyright Edward Diener 2013</i><br>
</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>
<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,41 +1,33 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_ARRAY_TO_LIST</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_TO_LIST</b> macro
converts an <i>array</i> to a <i>list</i>. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_ARRAY_TO_LIST</b>(<i>array</i>) </div>
<h4>Arguments</h4>
<dl>
<dt>array</dt>
<dd> The <i>array</i> to be converted.</dd>
</dl>
<ul>
</ul>
<h4>Remarks</h4>
<p>&nbsp;&nbsp;&nbsp; If the <i>array</i> to be converted is empty, as
represented by '( 0, () )', the resulting <i>list</i> is empty, as
represented by 'BOOST_PP_NIL'.</p>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/array/to_list.html">&lt;boost/preprocessor/array/to_list.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/array/to_list.html">boost/preprocessor/array/to_list.hpp</a>&gt;<br><br><a
href="array_to_list.html">BOOST_PP_ARRAY_TO_LIST</a>((3, (x, y, z)))<br> // expands to (x, (y, (z, <a
href="nil.html">BOOST_PP_NIL</a>)))</pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2011</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>
s
</body>
<head>
<title>BOOST_PP_ARRAY_TO_LIST</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_TO_LIST</b>
macro converts an <i>array</i> to a <i>list</i>. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_ARRAY_TO_LIST</b>(<i>array</i>)
</div>
<h4>Arguments</h4>
<dl><dt>array</dt>
<dd> The <i>array</i> to be converted. </dd>
</dl>
<a href="limit_tuple.html"></a><ul>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/array/to_list.html">&lt;boost/preprocessor/array/to_list.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/array/to_list.html">boost/preprocessor/array/to_list.hpp</a>&gt;<br><br><a href="array_to_list.html">BOOST_PP_ARRAY_TO_LIST</a>((3, (x, y, z)))<br> // expands to (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011</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,37 +1,31 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_ARRAY_TO_SEQ</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_TO_SEQ</b> macro
converts an <i>array</i> to a <i>seq</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_ARRAY_TO_SEQ</b>(<i>array</i>) </div>
<h4> Arguments </h4>
<dl>
<dt>array</dt>
<dd> The <i>array</i> to be converted.</dd>
</dl>
<h4>Remarks</h4>
<p>&nbsp;&nbsp;&nbsp; If the <i>array</i> to be converted is empty, as
represented by '( 0, () )', the resulting <i>seq</i> is undefined since a
<i>seq</i> cannot be empty.</p>
<h4>Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/array/to_seq.html">&lt;boost/preprocessor/array/to_seq.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/array/to_seq.html">boost/preprocessor/array/to_seq.hpp</a>&gt;<br><br><a
href="array_to_seq.html">BOOST_PP_ARRAY_TO_SEQ</a>((3, (a, b, c))) // expands to (a)(b)(c)</pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2011</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>
<title>BOOST_PP_ARRAY_TO_SEQ</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_TO_SEQ</b> macro
converts an <i>array</i> to a <i>seq</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_ARRAY_TO_SEQ</b>(<i>array</i>)
</div>
<h4> Arguments </h4>
<dl><dt>array</dt>
<dd> The <i>array</i> to be converted. </dd>
</dl>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/array/to_seq.html">&lt;boost/preprocessor/array/to_seq.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/array/to_seq.html">boost/preprocessor/array/to_seq.hpp</a>&gt;<br><br><a href="array_to_seq.html">BOOST_PP_ARRAY_TO_SEQ</a>((3, (a, b, c))) // expands to (a)(b)(c)<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011</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,39 +1,31 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_ARRAY_TO_TUPLE</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_TO_TUPLE</b> macro
converts an <i>array</i> to an <i>tuple</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_ARRAY_TO_TUPLE</b>(<i>array</i>) </div>
<h4> Arguments </h4>
<dl>
<dt>array</dt>
<dd> The <i>array</i> to be converted.</dd>
</dl>
<h4>Remarks</h4>
<p>&nbsp;&nbsp;&nbsp; If the <i>array</i> to be converted is empty, as
represented by '( 0, () )', the resulting <i>tuple</i> is undefined
since a <i>tuple</i> cannot be empty.</p>
<h4>Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/array/to_tuple.html">&lt;boost/preprocessor/array/to_tuple.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/array/to_tuple.html">boost/preprocessor/array/to_tuple.hpp</a>&gt;<br><br>#define ARRAY (3,(a, b, c))<br><br><a
href="array_to_tuple.html">BOOST_PP_ARRAY_TO_TUPLE</a>(ARRAY) // expands to (a, b, c)</pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011</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>
<title>BOOST_PP_ARRAY_TO_TUPLE</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_ARRAY_TO_TUPLE</b> macro
converts an <i>array</i> to an <i>tuple</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_ARRAY_TO_TUPLE</b>(<i>array</i>) </div>
<h4> Arguments </h4>
<dl>
<dt>array</dt>
<dd> The <i>array</i> to be converted. </dd>
</dl>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/array/to_tuple.html">&lt;boost/preprocessor/array/to_tuple.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/array/to_tuple.html">boost/preprocessor/array/to_tuple.hpp</a>&gt;<br><br>#define ARRAY (3,(a, b, c))<br><br><a href="array_to_tuple.html">BOOST_PP_ARRAY_TO_TUPLE</a>(ARRAY) // expands to (a, b, c)<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011</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,68 +1,75 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_FOR_r</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_FOR_<i>r</i></b> macro
represents a reentry into the <b>BOOST_PP_FOR</b> repetition construct. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_FOR_</b> ## <i>r</i>(<i>state</i>, <i>pred</i>,
<i>op</i>, <i>macro</i>) </div>
<h4>Arguments</h4>
<dl>
<dt>r</dt>
<dd> The next available <b>BOOST_PP_FOR</b> repetition. </dd>
<dt>state</dt>
<dd> The initial state. </dd>
<dt>pred</dt>
<dd> A binary predicate of the form <i>pred</i>(<i>r</i>, <i>state</i>).&nbsp;
This macro must expand to an integer in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.&nbsp;
<b>BOOST_PP_FOR</b> repeatedly expands <i>macro</i> while this
predicate returns non-zero.&nbsp; This macro is called with the next
available <b>BOOST_PP_FOR</b> repetition and the current <i>state</i>.
</dd>
<dt>op</dt>
<dd> A binary operation of the form <i>op</i>(<i>r</i>, <i>state</i>).&nbsp;
This operation is expanded by <b>BOOST_PP_FOR</b> with the next
available <b>BOOST_PP_FOR</b> repetition and the current <i>state</i>.&nbsp;
This macro is repeatedly applied to the <i>state</i>, each time
producing a new <i>state</i>, until <i>pred</i> returns <i>0</i>. </dd>
<dt>macro</dt>
<dd> A binary macro of the form <i>macro</i>(<i>r</i>, <i>state</i>).&nbsp;
This macro is expanded by <b>BOOST_PP_FOR</b> with the next available <b>BOOST_PP_FOR</b>
repetition and the current <i>state</i>.&nbsp; This macro is is
repeated by <b>BOOST_PP_FOR</b> until <i>pred</i> returns <i>0</i>. </dd>
</dl>
<h4>Remarks</h4>
<div> This macro expands to the sequence:
<div> <i>macro</i>(<i>r</i>, <i>state</i>) <i>macro</i>(<i>r</i>, <i>op</i>(<i>r</i>,
<i>state</i>)) ... <i>macro</i>(<i>r</i>, <i>op</i>(<i>r</i>, ... <i>op</i>(<i>r</i>,
<i>state</i>) ... )) </div>
</div>
<div> At certain times, it may be necessary to perform the concatenation
with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting
operator.&nbsp; This happens when the <i>r</i> value is a macro
invocation itself.&nbsp; It needs a delay to allow it to expand.&nbsp; The
syntax in such a scenario becomes:
<div> <b>BOOST_PP_CAT</b>(<b>BOOST_PP_FOR_</b>, <i>r</i>)(<i>state</i>,
<i>pred</i>, <i>op</i>, <i>macro</i>) </div>
</div>
<h4>See Also</h4>
<ul>
<li><a href="cat.html">BOOST_PP_CAT</a></li>
<li><a href="for.html">BOOST_PP_FOR</a></li>
<li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
<li><a href="for_r_macros.html"><span style="color: gray;">Macros with R
re-entrancy forms</span></a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/repetition/for.html">&lt;boost/preprocessor/repetition/for.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/arithmetic/dec.html">boost/preprocessor/arithmetic/dec.hpp</a>&gt;
<head>
<title>BOOST_PP_FOR_r</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_FOR_<i>r</i></b> macro represents a reentry into the <b>BOOST_PP_FOR</b> repetition construct.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_FOR_</b> ## <i>r</i>(<i>state</i>, <i>pred</i>, <i>op</i>, <i>macro</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>r</dt>
<dd>
The next available <b>BOOST_PP_FOR</b> repetition.
</dd>
<dt>state</dt>
<dd>
The initial state.
</dd>
<dt>pred</dt>
<dd>
A binary predicate of the form <i>pred</i>(<i>r</i>, <i>state</i>).&nbsp;
This macro must expand to an integer in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.&nbsp;
<b>BOOST_PP_FOR</b> repeatedly expands <i>macro</i> while this predicate returns non-zero.&nbsp;
This macro is called with the next available <b>BOOST_PP_FOR</b> repetition and the current <i>state</i>.
</dd>
<dt>op</dt>
<dd>
A binary operation of the form <i>op</i>(<i>r</i>, <i>state</i>).&nbsp;
This operation is expanded by <b>BOOST_PP_FOR</b> with the next available <b>BOOST_PP_FOR</b> repetition and the current <i>state</i>.&nbsp;
This macro is repeatedly applied to the <i>state</i>, each time producing a new <i>state</i>, until <i>pred</i> returns <i>0</i>.
</dd>
<dt>macro</dt>
<dd>
A binary macro of the form <i>macro</i>(<i>r</i>, <i>state</i>).&nbsp;
This macro is expanded by <b>BOOST_PP_FOR</b> with the next available <b>BOOST_PP_FOR</b> repetition and the current <i>state</i>.&nbsp;
This macro is is repeated by <b>BOOST_PP_FOR</b> until <i>pred</i> returns <i>0</i>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
This macro expands to the sequence:
<div>
<i>macro</i>(<i>r</i>, <i>state</i>) <i>macro</i>(<i>r</i>, <i>op</i>(<i>r</i>, <i>state</i>)) ... <i>macro</i>(<i>r</i>, <i>op</i>(<i>r</i>, ... <i>op</i>(<i>r</i>, <i>state</i>) ... ))
</div>
</div>
<div>
At certain times, it may be necessary to perform the concatenation with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting operator.&nbsp;
This happens when the <i>r</i> value is a macro invocation itself.&nbsp;
It needs a delay to allow it to expand.&nbsp;
The syntax in such a scenario becomes:
<div>
<b>BOOST_PP_CAT</b>(<b>BOOST_PP_FOR_</b>, <i>r</i>)(<i>state</i>, <i>pred</i>, <i>op</i>, <i>macro</i>)
</div>
</div>
<h4>See Also</h4>
<ul>
<li><a href="cat.html">BOOST_PP_CAT</a></li>
<li><a href="for.html">BOOST_PP_FOR</a></li>
<li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/repetition/for.html">&lt;boost/preprocessor/repetition/for.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/arithmetic/dec.html">boost/preprocessor/arithmetic/dec.hpp</a>&gt;
#include &lt;<a href="../headers/arithmetic/inc.html">boost/preprocessor/arithmetic/inc.hpp</a>&gt;
#include &lt;<a href="../headers/comparison/not_equal.html">boost/preprocessor/comparison/not_equal.hpp</a>&gt;
#include &lt;<a href="../headers/punctuation/comma_if.html">boost/preprocessor/punctuation/comma_if.hpp</a>&gt;
@ -133,16 +140,16 @@ TEMPLATE_TEMPLATE(2, 4, T)
template&lt;class, class, class, class&gt; class T4
*/
</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<br>
</i><i><EFBFBD> Copyright Edward Diener 2014</i><br>
</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>
<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,44 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_FOR_r_macros</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>This is a list, based on functionality, of the macros which have an
alternate <b>_<i>r</i></b> name, representing a reentry into the <b>BOOST_PP_FOR</b>
looping construct:
<p>repetition</p>
<ul>
<li><a href="deduce_r.html">BOOST_PP_DEDUCE_R</a></li>
</ul>
list<br>
<ul>
<li><a href="list_enum_r.html">BOOST_PP_LIST_ENUM_R</a></li>
<li><a href="list_for_each_i_r.html">BOOST_PP_LIST_FOR_EACH_I_R</a></li>
<li><a href="list_for_each_product_r.html">BOOST_PP_LIST_FOR_EACH_PRODUCT_R</a></li>
<li><a href="list_for_each_r.html">BOOST_PP_LIST_FOR_EACH_R</a></li>
<li><a href="list_to_seq_r.html">BOOST_PP_LIST_TO_SEQ_R</a></li>
<li><a href="list_to_tuple_r.html">BOOST_PP_LIST_TO_TUPLE_R</a></li>
</ul>
seq<br>
<ul>
<li><a href="seq_for_each_product_r.html">BOOST_PP_SEQ_FOR_EACH_PRODUCT_R</a></li>
<li><a href="seq_for_each_r.html">BOOST_PP_SEQ_FOR_EACH_R</a></li>
</ul>
base<br>
<ul>
<li><a href="for_r.html">BOOST_PP_FOR_R</a><br>
</li>
</ul>
<br>
<ul>
</ul>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2014</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,58 +0,0 @@
<html>
<head>
<title>BOOST_PP_IDENTITY_N</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_IDENTITY_N</b> macro expands to its first argument when invoked.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_IDENTITY_N</b>(<i>item,n</i>)(n-arguments)
</div>
<h4>Arguments</h4>
<dl>
<dt>item</dt>
<dd>
The result of the expansion.
</dd>
<dt>n</dt>
<dd>
The number of arguments when invoked.
</dd>
</dl>
<h4>Remarks</h4>
<div>
This macro is designed to be used with <b>BOOST_PP_IF</b> and <b>BOOST_PP_IIF</b> when only one of the clauses needs to be invoked.
</div>
<h4>See Also</h4>
<ul>
<li><a href="if.html">BOOST_PP_IF</a></li>
<li><a href="iif.html">BOOST_PP_IIF</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/facilities/identity_n.html">&lt;boost/preprocessor/facilities/identity.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/control/if.html">boost/preprocessor/control/if.hpp</a>&gt;
#include &lt;<a href="../headers/facilities/identity.html">boost/preprocessor/facilities/identity.hpp</a>&gt;
#define MACRO_CAT(y,z) y ## z
#define MACRO(n) <a href="if.html">BOOST_PP_IF</a>(n, <a href="identity_n.html">BOOST_PP_IDENTITY_N</a>(x,2), MACRO_CAT)(a,b)
MACRO(0) // expands to ab
MACRO(1) // expands to x
</pre></div>
<hr size="1">
<div style="margin-left: 0px"><i>&copy; Copyright Edward Diener 2015</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,47 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_IS_BEGIN_PARENS</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_IS_BEGIN_PAREN</b>S
determines whether the input starts with a set of parenthesis.</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_IS_BEGIN_PARENS</b>(...) <a href="../topics/variadic_macros.html#VNotation"
target="_self"><sup>(v)</sup></a></div>
<h4>Arguments</h4>
<h4>&nbsp;&nbsp;&nbsp; ...&nbsp;&nbsp;&nbsp; <span style="font-weight: normal;">&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp; The input as variadic data.</span></h4>
<h4>Remarks</h4>
<div> If the input input begins with a parenthesis, with any data within
that parenthesis, the macro returns 1, otherwise it returns 0. Data may
follow the beginning parenthesis and the macro still will return 1.<br>
<br>
For Visual Studio 2005 ( VC8 ) the input data must be a single parameter
else a compilation error will occur.</div>
<h4>See Also</h4>
<ul>
<li><a href="remove_parens.html">BOOST_PP_REMOVE_PARENS</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/punctuation/is_begin_parens.html">&lt;boost/preprocessor/punctuation/is_begin_parens.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/punctuation/is_begin_parens.html">boost/preprocessor/punctuation/is_begin_parens.hpp</a>&gt;
#define VARDATA more_data , more_params<br>#define VARDATAP ( data ) more_data , more_params<br>#define DATA data<br>#define DATAP ( data ) more_data<br>
BOOST_PP_IS_BEGIN_PARENS(VARDATA) // expands to 0, compiler error with VC8
BOOST_PP_IS_BEGIN_PARENS(VARDATAP) // expands to 1, compiler error with VC8<br><br>BOOST_PP_IS_BEGIN_PARENS(DATA) // expands to 0
BOOST_PP_IS_BEGIN_PARENS(DATAP) // expands to 1<br><br>BOOST_PP_IS_BEGIN_PARENS() // expands to 0<br>
</pre></div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2014</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,39 +1,34 @@
<html>
<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>
<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>
</html>

View File

@ -1,47 +1,39 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_LIST_TO_ARRAY</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIST_TO_ARRAY</b> macro
converts a <i>list</i> to an <i>array</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_LIST_TO_ARRAY</b>(<i>list</i>) </div>
<h4> Arguments </h4>
<dl>
<dt>list</dt>
<dd> The <i>list</i> to be converted. <br>
</dd>
</dl>
<h4>Remarks</h4>
<div> This macro uses <b>BOOST_PP_WHILE</b>. Within <b>BOOST_PP_WHILE</b>,
it is more efficient to use <b>BOOST_PP_LIST_TO_ARRAY_D</b>.<br>
<br>
If the <i>list</i> to be converted is empty, as represented by
'BOOST_PP_NIL', the resulting <i>array</i> is empty, as represented by '( 0, ()
)'.</div>
<h4>See Also</h4>
<ul>
<li><a href="list_to_array_d.html">BOOST_PP_LIST_TO_ARRAY_D</a></li>
</ul>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/list/to_array.html">&lt;boost/preprocessor/list/to_array.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/list/to_array.html">boost/preprocessor/list/to_array.hpp</a>&gt;<br><br>#define LIST (a, (b, (c, <a
href="nil.html">BOOST_PP_NIL</a>)))<br><br><a href="list_to_array.html">BOOST_PP_LIST_TO_ARRAY</a>(LIST) // expands to (3, (a, b, c))</pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</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>
<title>BOOST_PP_LIST_TO_ARRAY</title>
<link rel="stylesheet" type="text/css" href="../styles.css"></head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIST_TO_ARRAY</b> macro
converts a <i>list</i> to an <i>array</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_LIST_TO_ARRAY</b>(<i>list</i>) </div>
<h4> Arguments </h4>
<dl>
<dt>list</dt>
<dd> The <i>list</i> to be converted. </dd>
</dl>
<h4>Remarks</h4>
<div>
This macro uses <b>BOOST_PP_WHILE</b>.
Within <b>BOOST_PP_WHILE</b>, it is more efficient to use <b>BOOST_PP_LIST_TO_ARRAY_D</b>.
</div>
<h4>See Also</h4>
<ul>
<li><a href="list_to_array_d.html">BOOST_PP_LIST_TO_ARRAY_D</a></li>
</ul>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/list/to_array.html">&lt;boost/preprocessor/list/to_array.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/list/to_array.html">boost/preprocessor/list/to_array.hpp</a>&gt;<br><br>#define LIST (a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))<br><br><a href="list_to_array.html">BOOST_PP_LIST_TO_ARRAY</a>(LIST) // expands to (3, (a, b, c))<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</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,34 +1,27 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_LIST_TO_ARRAY_D</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIST_TO_ARRAY_D</b> macro
converts a <i>list</i> to an <i>array</i>. It reenters <b>BOOST_PP_WHILE</b>
with maximum efficiency. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_LIST_TO_ARRAY_D</b>(<i>d</i>, <i>list</i>)
</div>
<h4> Arguments </h4>
<dl>
<dt>d</dt>
<dd>The next available <b>BOOST_PP_WHILE</b> iteration.</dd>
<dt>list</dt>
<dd> The <i>list</i> to be converted. </dd>
</dl>
<h4>Remarks</h4>
<p>&nbsp;&nbsp;&nbsp; If the <i>list</i> to be converted is empty, as
represented by 'BOOST_PP_NIL', the resulting <i>array</i> is empty, as
represented by '( 0, () )'. </p>
<h4>See Also</h4>
<h4>See Also</h4>
<ul>
<li><a href="list_to_array_d.html">BOOST_PP_LIST_TO_ARRAY</a></li>
</ul>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/list/to_array.html">&lt;boost/preprocessor/list/to_array.hpp&gt;</a>
</div>
</body>
<head>
<title>BOOST_PP_LIST_TO_ARRAY_D</title>
<link rel="stylesheet" type="text/css" href="../styles.css"></head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_LIST_TO_ARRAY_D</b> macro converts a <i>list</i> to an <i>array</i>.
It reenters <b>BOOST_PP_WHILE</b> with maximum efficiency.
</div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_LIST_TO_ARRAY_D</b>(<i>d</i>, <i>list</i>) </div>
<h4> Arguments </h4>
<dl>
<dt>d</dt>
<dd>The next available <b>BOOST_PP_WHILE</b> iteration.</dd>
<dt>list</dt>
<dd> The <i>list</i> to be converted. </dd>
</dl>
<h4>See Also</h4>
<ul>
<li><a href="list_to_array_d.html">BOOST_PP_LIST_TO_ARRAY</a></li>
</ul>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/list/to_array.html">&lt;boost/preprocessor/list/to_array.hpp&gt;</a>
</div>
</body>
</html>

View File

@ -1,44 +1,40 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_LIST_TO_SEQ</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIST_TO_SEQ</b> macro
converts a <i>list</i> to a <i>seq</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_LIST_TO_SEQ</b>(<i>list</i>) </div>
<h4> Arguments </h4>
<dl>
<dt>list</dt>
<dd> The <i>list</i> to be converted. </dd>
</dl>
<h4>Remarks</h4>
<div> This macro uses <b>BOOST_PP_FOR</b>. Within <b>BOOST_PP_FOR</b>, it
is more efficient to use <b>BOOST_PP_LIST_TO_SEQ_R</b>.<br>
<br>
If the <i>list</i> to be converted is empty, as represented by
'BOOST_PP_NIL', the resulting <i>seq</i> is undefined since a <i>seq</i>
cannot be empty.</div>
<h4>See Also</h4>
<ul>
<li><a href="list_to_seq_r.html">BOOST_PP_LIST_TO_SEQ_R</a></li>
</ul>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/list/to_seq.html">&lt;boost/preprocessor/list/to_seq.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/list/to_seq.html">boost/preprocessor/list/to_seq.hpp</a>&gt;<br><br><a
href="list_to_seq.html">BOOST_PP_LIST_TO_SEQ</a>((a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))) // expands to (a)(b)(c)</pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i>© Copyright Edward Diener 2011</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>
<title>BOOST_PP_LIST_TO_SEQ</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIST_TO_SEQ</b> macro
converts a <i>list</i> to a <i>seq</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_LIST_TO_SEQ</b>(<i>list</i>)
</div>
<h4> Arguments </h4>
<dl><dt>list</dt>
<dd> The <i>list</i> to be converted. </dd>
</dl>
<h4>Remarks</h4>
<div>
This macro uses <b>BOOST_PP_FOR</b>.
Within <b>BOOST_PP_FOR</b>, it is more efficient to use <b>BOOST_PP_LIST_TO_SEQ_R</b>.
</div>
<h4>See Also</h4>
<ul>
<li><a href="list_to_seq_r.html">BOOST_PP_LIST_TO_SEQ_R</a></li>
</ul>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/list/to_seq.html">&lt;boost/preprocessor/list/to_seq.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/list/to_seq.html">boost/preprocessor/list/to_seq.hpp</a>&gt;<br><br><a href="list_to_seq.html">BOOST_PP_LIST_TO_SEQ</a>((a, (b, (c, <a href="nil.html">BOOST_PP_NIL</a>)))) // expands to (a)(b)(c)<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i>© Copyright Edward Diener 2011</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,32 +1,27 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_LIST_TO_SEQ_R</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIST_TO_SEQ_R</b> macro
converts a <i>list</i> to a <i>seq</i>. It reenters <b>BOOST_PP_FOR</b>
with maximum efficiency. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_LIST_TO_SEQ_R</b>(<i>r</i>, <i>list</i>) </div>
<h4> Arguments </h4>
<dl>
<dt>d</dt>
<dd>The next available <b>BOOST_PP_FOR</b> repetition.</dd>
<dt>list</dt>
<dd> The <i>list</i> to be converted.</dd>
</dl>
<h4>Remarks</h4>
<p>&nbsp;&nbsp;&nbsp; If the <i>list</i> to be converted is empty, as
represented by 'BOOST_PP_NIL', the resulting <i>seq</i> is undefined
since a <i>seq</i> cannot be empty.</p>
<h4>See Also</h4>
<ul>
<li><a href="list_to_seq_r.html">BOOST_PP_LIST_TO_SEQ</a></li>
</ul>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/list/to_seq.html">&lt;boost/preprocessor/list/to_seq.hpp&gt;</a>
</div>
</body>
<head>
<title>BOOST_PP_LIST_TO_SEQ_R</title>
<link rel="stylesheet" type="text/css" href="../styles.css"></head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_LIST_TO_SEQ_R</b> macro converts a <i>list</i> to an <i>seq</i>.
It reenters <b>BOOST_PP_FOR</b> with maximum efficiency.
</div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_LIST_TO_SEQ_R</b>(<i>r</i>, <i>list</i>) </div>
<h4> Arguments </h4>
<dl>
<dt>d</dt>
<dd>The next available <b>BOOST_PP_FOR</b> repetition.</dd>
<dt>list</dt>
<dd> The <i>list</i> to be converted. </dd>
</dl>
<h4>See Also</h4>
<ul>
<li><a href="list_to_seq_r.html">BOOST_PP_LIST_TO_SEQ</a></li>
</ul>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/list/to_seq.html">&lt;boost/preprocessor/list/to_seq.hpp&gt;</a>
</div>
</body>
</html>

View File

@ -1,55 +1,62 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_LIST_TO_TUPLE</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIST_TO_TUPLE</b> macro
converts a <i>list</i> to a <i>tuple</i>. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_LIST_TO_TUPLE</b>(<i>list</i>) </div>
<h4>Arguments</h4>
<dl>
<dt>list</dt>
<dd> The <i>list</i> to be converted. </dd>
</dl>
<h4>Remarks</h4>
<div> If <i>list</i> is, for example, (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))),
this macro will produce:
<div> (<i>a</i>, <i>b</i>, <i>c</i>) </div>
</div>
<div> Previously, this macro could not be used inside <b>BOOST_PP_FOR</b>.&nbsp;
There is no longer any such restriction.&nbsp; It is more efficient,
however, to use <b>BOOST_PP_LIST_TO_TUPLE_R</b> in such a situation.<br>
<br>
If the <i>list</i> to be converted is empty, as represented by 'BOOST_PP_NIL',
the resulting <i>tuple</i> is undefined since a <i>tuple</i> cannot be
empty.</div>
<h4>See Also</h4>
<ul>
<li><a href="list_to_tuple_r.html">BOOST_PP_LIST_TO_TUPLE_R</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/list/to_tuple.html">&lt;boost/preprocessor/list/to_tuple.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/list/to_tuple.html">boost/preprocessor/list/to_tuple.hpp</a>&gt;
<head>
<title>BOOST_PP_LIST_TO_TUPLE</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_LIST_TO_TUPLE</b> macro converts a <i>list</i> to a <i>tuple</i>.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_LIST_TO_TUPLE</b>(<i>list</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>list</dt>
<dd>
The <i>list</i> to be converted.
</dd>
</dl>
<h4>Remarks</h4>
<div>
If <i>list</i> is, for example, (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))),
this macro will produce:
<div>
(<i>a</i>, <i>b</i>, <i>c</i>)
</div>
</div>
<div>
Previously, this macro could not be used inside <b>BOOST_PP_FOR</b>.&nbsp;
There is no longer any such restriction.&nbsp;
It is more efficient, however, to use <b>BOOST_PP_LIST_TO_TUPLE_R</b> in such a situation.
</div>
<h4>See Also</h4>
<ul>
<li><a href="list_to_tuple_r.html">BOOST_PP_LIST_TO_TUPLE_R</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/list/to_tuple.html">&lt;boost/preprocessor/list/to_tuple.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/list/to_tuple.html">boost/preprocessor/list/to_tuple.hpp</a>&gt;
#define LIST (w, (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>))))
<a href="list_to_tuple.html">BOOST_PP_LIST_TO_TUPLE</a>(LIST) // expands to (w, x, y, z)
</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>
<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,42 +1,47 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_LIST_TO_TUPLE_R</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_LIST_TO_TUPLE_R</b> macro
converts a <i>list</i> to a <i>tuple</i>.&nbsp; It reenters <b>BOOST_PP_FOR</b>
with maximum efficiency. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_LIST_TO_TUPLE_R</b>(<i>r</i>, <i>list</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>r</dt>
<dd> The next available <b>BOOST_PP_FOR</b> repetition. </dd>
<dt>list</dt>
<dd> The <i>list</i> to be converted. </dd>
</dl>
<h4>Remarks</h4>
<p>&nbsp;&nbsp; If <i>list</i> is, for example, (<i>a</i>, (<i>b</i>, (<i>c</i>,
<b>BOOST_PP_NIL</b>))), this macro will produce: </p>
<div>
<div> (<i>a</i>, <i>b</i>, <i>c</i>)&nbsp;&nbsp; </div>
</div>
<h4><span style="font-weight: normal;">&nbsp;&nbsp; If the <i>list</i> to
be converted is empty, as represented by 'BOOST_PP_NIL', the resulting <i>tuple</i>
is undefined since a <i>tuple</i> cannot be empty. </span></h4>
<h4>See Also</h4>
<ul>
<li><a href="list_to_tuple.html">BOOST_PP_LIST_TO_TUPLE</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/list/to_tuple.html">&lt;boost/preprocessor/list/to_tuple.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/list/adt.html">boost/preprocessor/list/adt.hpp</a>&gt;
<head>
<title>BOOST_PP_LIST_TO_TUPLE_R</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_LIST_TO_TUPLE_R</b> macro converts a <i>list</i> to a <i>tuple</i>.&nbsp;
It reenters <b>BOOST_PP_FOR</b> with maximum efficiency.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_LIST_TO_TUPLE_R</b>(<i>r</i>, <i>list</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>r</dt>
<dd>
The next available <b>BOOST_PP_FOR</b> repetition.
</dd>
<dt>list</dt>
<dd>
The <i>list</i> to be converted.
</dd>
</dl>
<h4>Remarks</h4>
<div>
If <i>list</i> is, for example, (<i>a</i>, (<i>b</i>, (<i>c</i>, <b>BOOST_PP_NIL</b>))),
this macro will produce:
<div>
(<i>a</i>, <i>b</i>, <i>c</i>)
</div>
</div>
<h4>See Also</h4>
<ul>
<li><a href="list_to_tuple.html">BOOST_PP_LIST_TO_TUPLE</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/list/to_tuple.html">&lt;boost/preprocessor/list/to_tuple.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/list/adt.html">boost/preprocessor/list/adt.hpp</a>&gt;
#include &lt;<a href="../headers/list/to_tuple.html">boost/preprocessor/list/to_tuple.hpp</a>&gt;
#include &lt;<a href="../headers/repetition/for.html">boost/preprocessor/repetition/for.hpp</a>&gt;
@ -49,14 +54,16 @@
<a href="for.html">BOOST_PP_FOR</a>(LIST, PRED, OP, MACRO)
// expands to (x, y, z) (y, z) (z)
</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>
<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

@ -34,7 +34,7 @@
It is more efficient, however, to use <b>BOOST_PP_MUL_D</b> in such a situation.
</div>
<div>
This macro is the most efficient when <i>x</i> is greater than or equal to <i>y</i>.&nbsp;
This macro is the most efficient when <i>x</i> is less than or equal to <i>y</i>.&nbsp;
However, the efficiency gain is not worth actually comparing the two arguments prior to invocation.&nbsp;
In other words, <i>x</i> should be the value that is <i>most likely</i> to be the largest of the two operands.
</div>

View File

@ -34,7 +34,7 @@
If the product of <i>x</i> and <i>y</i> is greater than <b>BOOST_PP_LIMIT_MAG</b>, the result is saturated to <b>BOOST_PP_LIMIT_MAG</b>.
</div>
<div>
This macro is the most efficient when <i>x</i> is greater than or equal to <i>y</i>.&nbsp;
This macro is the most efficient when <i>x</i> is less than or equal to <i>y</i>.&nbsp;
However, the efficiency gain is not worth actually comparing the two arguments prior to invocation.&nbsp;
In other words, <i>x</i> should be the value that is <i>most likely</i> to be the largest of the two operands.
</div>

View File

@ -1,58 +1,46 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_OVERLOAD</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_OVERLOAD</b> variadic
macro expands to the name of a non-variadic macro having a given number of
parameters.<br>
</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_OVERLOAD</b>(<i>prefix</i>,...) <a href="../topics/variadic_macros.html#VNotation"
target="_self"><sup>(v)</sup></a><br>
</div>
<h4>Arguments</h4>
<dl>
<dt>prefix<br>
</dt>
<dd> The prefix of the non-variadic macro name. </dd>
<dt>...<br>
</dt>
<dd><i> Variadic data</i>. The number of variadic data
elements, as determined by BOOST_PP_VARIADIC_SIZE, is appended to the
prefix to form the output non-variadic macro name.<br>
</dd>
</dl>
<h4>Remarks</h4>
<div> This macro creates a macro name which depends on the number of
elements of variadic data. It should be used in the form of <br>
BOOST_PP_OVERLOAD(MACRO_NAME_,__VA_ARGS__)(__VA_ARGS__) in order to
call a non-variadic macro taking a given number of variadic data
elements as non-variadic arguments. In this way one can invoke a
variadic macro with a variable number of parameters which calls one of
a series of non-variadic macros doing very similar things.
</div>
<b>Requirements</b>
<div> <b>Header:</b> &nbsp;<a href="../headers/facilities/overload.html">&lt;boost/preprocessor/facilities/overload.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/facilities/overload.html">boost/preprocessor/facilities/overload.hpp</a>&gt;<br>#include <<a
href="../headers/cat.html">boost/preprocessor/cat.hpp</a>><br>#include <<a href="../headers/facilities/empty.html">boost/preprocessor/facilities/empty.hpp</a>><br>#include <<a
href="../headers/arithmetic/add.html">boost/preprocessor/arithmetic/add.hpp</a>><br><br>#define MACRO_1(number) MACRO_2(number,10)<br>#define MACRO_2(number1,number2) <a
href="add.html">BOOST_PP_ADD</a>(number1,number2)<br><br>#if !BOOST_PP_VARIADICS_MSVC<br><br>#define MACRO_ADD_NUMBERS(...) <a
href="overload.html">BOOST_PP_OVERLOAD</a>(MACRO_,__VA_ARGS__)(__VA_ARGS__)<br><br>#else<br><br>// or for Visual C++<br><br>#define MACRO_ADD_NUMBERS(...) \<br> <a
href="cat.html">BOOST_PP_CAT</a>(<a href="overload.html">BOOST_PP_OVERLOAD</a>(MACRO_,__VA_ARGS__)(__VA_ARGS__),<a
href="empty.html">BOOST_PP_EMPTY</a>())<br><br>#endif<br><br>MACRO_ADD_NUMBERS(5) // output is 15<br>MACRO_ADD_NUMBERS(3,6) // output is 9</pre>
<div style="margin-left: 0px;"> The <b>BOOST_PP_OVERLOAD</b> variadic macro expands to the name of a non-variadic macro having a given number of parameters.<br>
</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_OVERLOAD</b>(<i>prefix</i>,...) <sup>(v)</sup><br>
</div>
<h4>Arguments</h4>
<dl>
<dt>prefix<br>
</dt><dd>
The prefix of the non-variadic macro name.
</dd><dt>...<br>
</dt><dd><i>
Variadic data</i>. The number of variadic data
elements, as determined by BOOST_PP_VARIADIC_SIZE, is appended to the
prefix to form the output non-variadic macro name.<br>
</dd>
</dl>
<h4>Remarks</h4>
<div> This macro creates a macro name which depends on the number of elements of variadic data. It should be used in the form of <br>
BOOST_PP_OVERLOAD(MACRO_NAME_,__VA_ARGS__)(__VA_ARGS__) in order to
call a non-variadic macro taking a given number of variadic data
elements as non-variadic arguments. In this way one can invoke a
variadic macro with a variable number of parameters which calls one of
a series of non-variadic macros doing very similar things.
</div><b>Requirements</b>
<div> <b>Header:</b> &nbsp;<a href="../headers/facilities/overload.html">&lt;boost/preprocessor/facilities/overload.hpp&gt;</a>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011,2013,2016</i> </div>
<div style="margin-left: 0px;">
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/facilities/overload.html">boost/preprocessor/facilities/overload.hpp</a>&gt;<br>#include &lt;<a href="../headers/cat.html">boost/preprocessor/cat.hpp</a>&gt;<br>#include &lt;<a href="../headers/facilities/empty.html">boost/preprocessor/facilities/empty.hpp</a>&gt;<br>#include &lt;<a href="../headers/arithmetic/add.html">boost/preprocessor/arithmetic/add.hpp</a>&gt;<br><br>#define MACRO_1(number) MACRO_2(number,10)<br>#define MACRO_2(number1,number2) <a href="add.html">BOOST_PP_ADD</a>(number1,number2)<br><br>#define MACRO_ADD_NUMBERS(...) <a href="overload.html">BOOST_PP_OVERLOAD</a>(MACRO_,__VA_ARGS__)(__VA_ARGS__)<br><br>// or for Visual C++<br><br>#define MACRO_ADD_NUMBERS(...) \<br> <a href="cat.html">BOOST_PP_CAT</a>(<a href="overload.html">BOOST_PP_OVERLOAD</a>(MACRO_,__VA_ARGS__)(__VA_ARGS__),<a href="empty.html">BOOST_PP_EMPTY</a>())<br><br>MACRO_ADD_NUMBERS(5) // output is 15<br>MACRO_ADD_NUMBERS(3,6) // output is 9<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011</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>
(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>
</body>
</html>

View File

@ -1,44 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_REMOVE_PARENS</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_REMOVE_PAREN</b>S macro
removes the beginning parenthesis, if it exists, from the input data and
expands to the result</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_REMOVE_PARENS</b>(param) <a href="../topics/variadic_macros.html#VNotation"
target="_self"><sup>(v)</sup></a></div>
<h4>Arguments&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-weight: normal;"></span></h4>
<h4><span style="font-weight: normal;">&nbsp;&nbsp;&nbsp; param</span>&nbsp;&nbsp;
<span style="font-weight: normal;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
The input data.</span></h4>
<h4>Remarks</h4>
<div> If the input begins with a parenthesis, with any data within that
parenthesis, the macro removes the parenthesis and expands to the result.
If the input does not begin with a parenthesis the macro expands to the
input.<br>
</div>
<h4>See Also</h4>
<ul>
<li><a href="is_begin_parens.html">BOOST_PP_IS_BEGIN_PARENS</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/punctuation/remove_parens.html">&lt;boost/preprocessor/punctuation/remove_parens.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/punctuation/remove_parens.html">boost/preprocessor/punctuation/remove_parens.hpp</a>&gt;<br><br>#define DATA data<br>#define DATAP ( data ) more_data<br><br>BOOST_PP_REMOVE_PARENS(DATA) // expands to 'data'
BOOST_PP_REMOVE_PARENS(DATAP) // expands to 'data more_data'<br>
</pre></div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2014</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,59 +1,67 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_REPEAT_z</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_REPEAT_<i>z</i></b> macro
represents a reentry into the <b>BOOST_PP_REPEAT</b> repetition
construct. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_REPEAT_</b> ## <i>z</i>(<i>count</i>, <i>macro</i>,
<i>data</i>) </div>
<h4>Arguments</h4>
<dl>
<dt>z</dt>
<dd> The next available <b>BOOST_PP_REPEAT</b> dimension. </dd>
<dt>count</dt>
<dd> The number of repetitious calls to <i>macro</i>.&nbsp; Valid values
range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>. </dd>
<dt>macro</dt>
<dd> A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).&nbsp;
This macro is expanded by <b>BOOST_PP_REPEAT</b> with the next
available repetition depth, the current repetition number, and the
auxiliary <i>data</i> argument.&nbsp; </dd>
<dt>data</dt>
<dd> Auxiliary data passed to <i>macro</i>. </dd>
</dl>
<h4>Remarks</h4>
<div> This macro expands to the sequence:
<div> <i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>) <i>macro</i>(<i>z</i>,
<i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>,
<i>data</i>) </div>
</div>
<div> At certain times, it may be necessary to perform the concatenation
with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting
operator.&nbsp; This happens when the <i>z</i> value is a macro
invocation itself.&nbsp; It needs a delay to allow it to expand.&nbsp; The
syntax in such a scenario becomes:
<div> <b>BOOST_PP_CAT</b>(<b>BOOST_PP_REPEAT_</b>, <i>z</i>)(<i>count</i>,
<i>macro</i>, <i>data</i>) </div>
</div>
<h4>See Also</h4>
<ul>
<li><a href="cat.html">BOOST_PP_CAT</a></li>
<li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
<li><a href="repeat.html">BOOST_PP_REPEAT</a></li>
<li><a href="repeat_z_macros.html"><span style="color: gray;">Macros with
Z re-entrancy forms</span></a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/repetition/repeat.html">&lt;boost/preprocessor/repetition/repeat.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;
<head>
<title>BOOST_PP_REPEAT_z</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_REPEAT_<i>z</i></b> macro represents a reentry into the <b>BOOST_PP_REPEAT</b> repetition construct.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_REPEAT_</b> ## <i>z</i>(<i>count</i>, <i>macro</i>, <i>data</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>z</dt>
<dd>
The next available <b>BOOST_PP_REPEAT</b> dimension.
</dd>
<dt>count</dt>
<dd>
The number of repetitious calls to <i>macro</i>.&nbsp;
Valid values range from <i>0</i> to <b>BOOST_PP_LIMIT_REPEAT</b>.
</dd>
<dt>macro</dt>
<dd>
A ternary operation of the form <i>macro</i>(<i>z</i>, <i>n</i>, <i>data</i>).&nbsp;
This macro is expanded by <b>BOOST_PP_REPEAT</b> with the next available repetition depth,
the current repetition number, and the auxiliary <i>data</i> argument.&nbsp;
</dd>
<dt>data</dt>
<dd>
Auxiliary data passed to <i>macro</i>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
This macro expands to the sequence:
<div>
<i>macro</i>(<i>z</i>, <i>0</i>, <i>data</i>) <i>macro</i>(<i>z</i>, <i>1</i>, <i>data</i>) ... <i>macro</i>(<i>z</i>, <i>count</i> - <i>1</i>, <i>data</i>)
</div>
</div>
<div>
At certain times, it may be necessary to perform the concatenation with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting operator.&nbsp;
This happens when the <i>z</i> value is a macro invocation itself.&nbsp;
It needs a delay to allow it to expand.&nbsp;
The syntax in such a scenario becomes:
<div>
<b>BOOST_PP_CAT</b>(<b>BOOST_PP_REPEAT_</b>, <i>z</i>)(<i>count</i>, <i>macro</i>, <i>data</i>)
</div>
</div>
<h4>See Also</h4>
<ul>
<li><a href="cat.html">BOOST_PP_CAT</a></li>
<li><a href="limit_repeat.html">BOOST_PP_LIMIT_REPEAT</a></li>
<li><a href="repeat.html">BOOST_PP_REPEAT</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/repetition/repeat.html">&lt;boost/preprocessor/repetition/repeat.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;
#include &lt;<a href="../headers/punctuation/comma_if.html">boost/preprocessor/punctuation/comma_if.hpp</a>&gt;
#include &lt;<a href="../headers/repetition/repeat.html">boost/preprocessor/repetition/repeat.hpp</a>&gt;
@ -77,16 +85,16 @@
template&lt;class, class, class&gt; class T2
*/
</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<br>
</i><i><EFBFBD> Copyright Edward Diener 2014</i><br>
</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>
<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,45 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_REPEAT_z_macros</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>This is a list, based on functionality, of the macros which have an
alternate <b>_z<i></i></b> name, representing a reentry into the <b>BOOST_PP_REPEAT</b>
looping construct:<br>
<br>
array<br>
<ul>
<li><a href="array_pop_back_z.html">BOOST_PP_ARRAY_POP_BACK_Z</a></li>
<li><a href="array_pop_front_z.html">BOOST_PP_ARRAY_POP_FRONT_Z</a></li>
</ul>
repetition<br>
<ul>
<li><a href="deduce_z.html">BOOST_PP_DEDUCE_Z</a></li>
<li><a href="enum_binary_params_z.html">BOOST_PP_ENUM_BINARY_PARAMS_Z</a></li>
<li><a href="enum_params_z.html">BOOST_PP_ENUM_PARAMS_Z</a></li>
<li><a href="esbpz.html">BOOST_PP_ENUM_SHIFTED_BINARY_PARAMS_Z</a></li>
<li><a href="enum_shifted_params_z.html">BOOST_PP_ENUM_SHIFTED_PARAMS_Z</a></li>
<li><a href="enum_shifted_z.html">BOOST_PP_ENUM_SHIFTED_<i>z</i></a></li>
<li><a href="etbpz.html">BOOST_PP_ENUM_TRAILING_BINARY_PARAMS_Z</a></li>
<li><a href="enum_trailing_params_z.html">BOOST_PP_ENUM_TRAILING_PARAMS_Z</a></li>
<li><a href="enum_trailing_z.html">BOOST_PP_ENUM_TRAILING_<i>z</i></a></li>
<li><a href="enum_z.html">BOOST_PP_ENUM_<i>z</i></a></li>
<li><a href="repeat_from_to_d_z.html">BOOST_PP_REPEAT_FROM_TO_D_<i>z</i></a></li>
<li><a href="repeat_from_to_z.html">BOOST_PP_REPEAT_FROM_TO_<i>z</i></a></li>
</ul>
base<br>
<ul>
<li><a href="repeat_z.html">BOOST_PP_REPEAT_<i>z</i></a></li>
</ul>
<br>
<pre></pre>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2014</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

@ -11,7 +11,7 @@
Usage
</h4>
<div class="code">
<b>BOOST_PP_SEQ_REPLACE</b>(<i>seq</i>, <i>i</i>, <i>elem</i>)
<b>BOOST_PP_SEQ_RPLACE</b>(<i>seq</i>, <i>i</i>, <i>elem</i>)
</div>
<h4>
Arguments

View File

@ -1,55 +1,67 @@
<html>
<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>
<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>
</html>

View File

@ -13,7 +13,7 @@
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_EAT</b>(<i>size</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><b></b><br>
<b>BOOST_PP_TUPLE_EAT</b>(<i>size</i>) <sup>(v)</sup><b></b><br>
</div>
<h4>Arguments</h4>
<dl>
@ -26,7 +26,7 @@ or<br>
<h4>Remarks</h4>
<div>
The <i>size</i> argument must be the actual size of the <i>tuple</i> in the non-variadic version. <br>
<br>For the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a>&nbsp;the
<br>For the variadic version <sup>(v)</sup>&nbsp;the
size may be left out
completely so that the macro can be invoked as BOOST_PP_TUPLE_EAT(); you may get a warning from some compilers, but the
functionality will still work. If you specify a size in the variadic
@ -42,12 +42,12 @@ not occur.<br>
<b>Header:</b> &nbsp;<a href="../headers/tuple/eat.html">&lt;boost/preprocessor/tuple/eat.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>#include &lt;<a href="../headers/control/if.html">boost/preprocessor/control/if.hpp</a>&gt;<br>#include &lt;<a href="../headers/tuple/eat.html">boost/preprocessor/tuple/eat.hpp</a>&gt;<br><br>#define OP(a, b) (a b)<br><br>#define MACRO(n) <a href="if.html">BOOST_PP_IF</a>(n, OP, <a href="tuple_eat.html">BOOST_PP_TUPLE_EAT</a>(2))(1, 2)<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br>#define MACRO(n) <a href="if.html">BOOST_PP_IF</a>(n, OP, <a href="file:///C:/Programming/VersionControl/sandbox/variadics/libs/preprocessor/doc/ref/tuple_eat.html">BOOST_PP_TUPLE_EAT</a>())(1, 2)<br><br>MACRO(0) // expands to nothing<br>MACRO(1) // expands to (1, 2)<br></pre></div>
<div><pre>#include &lt;<a href="../headers/control/if.html">boost/preprocessor/control/if.hpp</a>&gt;<br>#include &lt;<a href="../headers/tuple/eat.html">boost/preprocessor/tuple/eat.hpp</a>&gt;<br><br>#define OP(a, b) (a b)<br><br>#define MACRO(n) <a href="if.html">BOOST_PP_IF</a>(n, OP, <a href="tuple_eat.html">BOOST_PP_TUPLE_EAT</a>(2))(1, 2)<br><br>// or for the variadic version <sup>(v)</sup><br><br>#define MACRO(n) <a href="if.html">BOOST_PP_IF</a>(n, OP, <a href="file:///C:/Programming/VersionControl/sandbox/variadics/libs/preprocessor/doc/ref/tuple_eat.html">BOOST_PP_TUPLE_EAT</a>())(1, 2)<br><br>MACRO(0) // expands to nothing<br>MACRO(1) // expands to (1, 2)<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<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013</i><br>
</i><i><EFBFBD> Copyright Edward Diener 2011</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See

View File

@ -13,7 +13,7 @@
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_ELEM</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><b></b><br>
<b>BOOST_PP_TUPLE_ELEM</b>(<i>...</i>) <sup>(v)</sup><b></b><br>
</div>
<h4>Arguments</h4>
<dl>
@ -49,12 +49,12 @@ or<br>
<b>Header:</b> &nbsp;<a href="../headers/tuple/elem.html">&lt;boost/preprocessor/tuple/elem.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>#include &lt;<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/elem.hpp</a>&gt;<br><br>#define TUPLE (a, b, c, d)<br><br><a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 0, TUPLE) // expands to a<br><a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 3, TUPLE) // expands to d<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="file:///C:/Programming/VersionControl/sandbox/variadics/libs/preprocessor/doc/ref/tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(0, TUPLE) // expands to a in the variadic version<br><a href="file:///C:/Programming/VersionControl/sandbox/variadics/libs/preprocessor/doc/ref/tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, TUPLE) // expands to d in the variadic version<br></pre></div>
<div><pre>#include &lt;<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/elem.hpp</a>&gt;<br><br>#define TUPLE (a, b, c, d)<br><br><a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 0, TUPLE) // expands to a<br><a href="tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(4, 3, TUPLE) // expands to d<br><br>// or for the variadic version <sup>(v)</sup><br><br><a href="file:///C:/Programming/VersionControl/sandbox/variadics/libs/preprocessor/doc/ref/tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(0, TUPLE) // expands to a in the variadic version<br><a href="file:///C:/Programming/VersionControl/sandbox/variadics/libs/preprocessor/doc/ref/tuple_elem.html">BOOST_PP_TUPLE_ELEM</a>(3, TUPLE) // expands to d in the variadic version<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<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013</i><br>
</i><i><EFBFBD> Copyright Edward Diener 2011</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See

View File

@ -10,7 +10,7 @@
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_ENUM</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><b></b><br>
<b>BOOST_PP_TUPLE_ENUM</b>(<i>...</i>) <sup>(v)</sup><b></b><br>
</div>
<h4> Arguments </h4>
<dl>
@ -25,7 +25,7 @@ or<br>
<h4> Remarks </h4>
<div>
<br>You can
invoke the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> as BOOST_PP_TUPLE_ENUM(<i>tuple</i>) or
invoke the variadic version <sup>(v)</sup> as BOOST_PP_TUPLE_ENUM(<i>tuple</i>) or
BOOST_PP_TUPLE_ENUM(<i>size</i>,<i>tuple</i>).<br>
</div>
<h4>See Also</h4>
@ -38,13 +38,13 @@ BOOST_PP_TUPLE_ENUM(<i>size</i>,<i>tuple</i>).<br>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/enum.html">boost/preprocessor/tuple/enum.hpp</a>&gt;<br><br>#define TUPLE (B,O,O,S,T)<br><br><a href="tuple_enum.html">BOOST_PP_TUPLE_ENUM</a>(5,TUPLE) // expands to B, O, O, S, T<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_enum.html">BOOST_PP_TUPLE_ENUM</a>(TUPLE) // expands to B, O, O, S, T<br></pre>
<pre>#include &lt;<a href="../headers/tuple/enum.html">boost/preprocessor/tuple/enum.hpp</a>&gt;<br><br>#define TUPLE (B,O,O,S,T)<br><br><a href="tuple_enum.html">BOOST_PP_TUPLE_ENUM</a>(5,TUPLE) // expands to B, O, O, S, T<br><br>// or for the variadic version <sup>(v)<br><br></sup><a href="tuple_enum.html">BOOST_PP_TUPLE_ENUM</a>(TUPLE) // expands to B, O, O, S, T<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<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013</i><br>
</i><i><EFBFBD> Copyright Edward Diener 2011</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0.

View File

@ -1,54 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_TUPLE_INSERT</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_INSERT</b> macro
inserts an element into an <i>tuple</i>.</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_INSERT</b>(<i>tuple</i>, <i>i</i>, <i>elem</i>)
<a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
<h4>Arguments</h4>
<dl>
<dt>tuple</dt>
<dd> The <i>tuple</i> into which an element is to be inserted. </dd>
<dt>i</dt>
<dd> The zero-based position in <i>tuple</i> where an element is to be
inserted.&nbsp; Valid values range from <i>0</i> to <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>).</dd>
<dt>elem</dt>
<dd> The element to insert. </dd>
</dl>
<h4>Remarks</h4>
<div> This macro inserts <i>elem</i> before the element at index <i>i</i>.
</div>
<div> If the operation attempts to create an <i>tuple</i> that is larger
than <b>BOOST_PP_LIMIT_TUPLE</b>, the result is undefined.</div>
<div> This macro uses <b>BOOST_PP_WHILE</b> interally.&nbsp; Therefore, to
use the <i>d</i> parameter passed from other macros that use <b>BOOST_PP_WHILE</b>,
see <b>BOOST_PP_TUPLE_INSERT_D</b>.</div>
<h4>See Also</h4>
<ul>
<li><a href="tuple_insert_d.html">BOOST_PP_TUPLE_INSERT_D</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/insert.html">&lt;boost/preprocessor/tuple/insert.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/insert.html">boost/preprocessor/tuple/insert.hpp</a>&gt;
#define TUPLE (a, b, d)
<a href="tuple_insert.html">BOOST_PP_TUPLE_INSERT</a>(TUPLE, 2, c) // expands to (a, b, c, d)
</pre></div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</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,46 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_TUPLE_INSERT_D</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_INSERT_D</b> macro
inserts an element into a <i>tuple</i>.&nbsp; It reenters <b>BOOST_PP_WHILE</b>
with maximum efficiency.</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_INSERT_D</b>(<i>d</i>, <i>tuple</i>,
<i>i</i>, <i>elem</i>) <a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
<h4>Arguments</h4>
<dl>
<dt>d</dt>
<dd> The next available <b>BOOST_PP_WHILE</b> iteration. </dd>
<dt>tuple</dt>
<dd> The <i>tuple</i> into which an element is to be inserted.</dd>
<dt>i</dt>
<dd> The zero-based position in <i>tuple</i> where an element is to be
inserted.&nbsp; Valid values range from <i>0</i> to <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>).</dd>
<dt>elem</dt>
<dd> The element to insert. </dd>
</dl>
<h4>Remarks</h4>
<div> This macro inserts <i>elem</i> before the element at index <i>i</i>.
</div>
<div> If the operation attempts to create an <i>tuple</i> that is larger
than <b>BOOST_PP_LIMIT_TUPLE</b>, the result is undefined.</div>
<h4>See Also</h4>
<ul>
<li><a href="tuple_insert.html">BOOST_PP_TUPLE_INSERT</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/insert.html">&lt;boost/preprocessor/tuple/insert.hpp&gt;</a>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</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,48 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_TUPLE_POP_BACK</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_POP_BACK</b> macro
pops an element from the end of an <i>tuple</i>.</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_POP_BACK</b>(<i>tuple</i>) <a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
<h4>Arguments</h4>
<dl>
<dt>tuple</dt>
<dd>The <i>tuple</i> to pop an element from.</dd>
</dl>
<h4>Remarks</h4>
<div style="background-color: white;"> This macro returns <i>tuple</i>
after removing the last element.&nbsp; If <i>tuple</i> has only a single
element, it remains unchanged since a&nbsp;<i>tuple </i>must have at
least one element.</div>
<div> This macro uses <b>BOOST_PP_REPEAT</b> internally.&nbsp; Therefore,
to use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>,
see <b>BOOST_PP_TUPLE_POP_BACK_Z</b> </div>
<h4>See Also</h4>
<ul>
<li><a href="tuple_pop_back_z.html">BOOST_PP_TUPLE_POP_BACK_Z</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/pop_back.html">&lt;boost/preprocessor/tuple/pop_back.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/pop_back.html">boost/preprocessor/tuple/pop_back.hpp</a>&gt;
#define TUPLE (a, b, c)
<a href="tuple_pop_back.html">BOOST_PP_TUPLE_POP_BACK</a>(TUPLE) // expands to (a, b)
</pre></div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</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,40 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_TUPLE_POP_BACK_Z</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_POP_BACK_Z</b> macro
pops an element from the end of an <i>tuple</i>.&nbsp; It reenters <b>BOOST_PP_REPEAT</b>
with maximum efficiency. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_POP_BACK_Z</b>(<i>z</i>, <i>tuple</i>)
<a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
<h4>Arguments</h4>
<dl>
<dt>z</dt>
<dd> The next available <b>BOOST_PP_REPEAT</b> dimension. </dd>
<dt>tuple</dt>
<dd> The <i>tuple</i> to pop an element from.</dd>
</dl>
<h4>Remarks</h4>
<div> This macro returns <i>tuple</i> after removing the last
element.&nbsp; If <i>tuple</i> has only a single element, it remains
unchanged since a&nbsp;<i>tuple </i>must have at least one element.</div>
<h4>See Also</h4>
<ul>
<li><a href="tuple_pop_back.html">BOOST_PP_TUPLE_POP_BACK</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/pop_back.html">&lt;boost/preprocessor/tuple/pop_back.hpp&gt;</a>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</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,47 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_TUPLE_POP_FRONT</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_POP_FRONT</b> macro
pops an element from the beginning of a <i>tuple</i>.</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_POP_FRONT</b>(<i>tuple</i>) <a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
<h4>Arguments</h4>
<dl>
<dt>tuple</dt>
<dd> The <i>tuple</i> to pop an element from.</dd>
</dl>
<h4>Remarks</h4>
<div> This macro returns <i>tuple</i> after removing the first
element.&nbsp; If <i>tuple</i> has only a single element, it remains
unchanged since a&nbsp;<i>tuple </i>must have at least one element.</div>
<div> This macro uses <b>BOOST_PP_REPEAT</b> internally.&nbsp; Therefore,
to use the <i>z</i> parameter passed from other macros that use <b>BOOST_PP_REPEAT</b>,
see <b>BOOST_PP_TUPLE_POP_FRONT_Z</b> </div>
<h4>See Also</h4>
<ul>
<li><a href="tuple_pop_front_z.html">BOOST_PP_TUPLE_POP_FRONT_Z</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/pop_front.html">&lt;boost/preprocessor/tuple/pop_front.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/pop_front.html">boost/preprocessor/tuple/pop_front.hpp</a>&gt;
#define TUPLE (a, b, c)
<a href="tuple_pop_front.html">BOOST_PP_TUPLE_POP_FRONT</a>(TUPLE) // expands to (b, c)
</pre></div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</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,40 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_TUPLE_POP_FRONT_Z</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_POP_FRONT_Z</b>
macro pops an element from the beginning of a&nbsp;<i>tuple</i>.&nbsp; It
reenters <b>BOOST_PP_REPEAT</b> with maximum efficiency.</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_POP_FRONT_Z</b>(<i>z</i>, <i>tuple</i>)
<a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
<h4>Arguments</h4>
<dl>
<dt>z</dt>
<dd> The next available <b>BOOST_PP_REPEAT</b> dimension.</dd>
<dt>tuple</dt>
<dd> The <i>tuple</i> to pop an element from.</dd>
</dl>
<h4>Remarks</h4>
<div> This macro returns <i>tuple</i> after removing the first
element.&nbsp; If <i>tuple</i> has only a single element, it remains
unchanged since a&nbsp;<i>tuple </i>must have at least one element.</div>
<h4>See Also</h4>
<ul>
<li><a href="tuple_pop_front.html">BOOST_PP_TUPLE_POP_FRONT</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/pop_front.html">&lt;boost/preprocessor/tuple/pop_front.hpp&gt;</a>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</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,39 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_TUPLE_PUSH_BACK</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_PUSH_BACK</b> macro
appends an element to the end of a <i>tuple</i>.</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_PUSH_BACK</b>(<i>tuple</i>, <i>elem</i>)
<a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
<h4>Arguments</h4>
<dl>
<dt>tuple</dt>
<dd> The <i>tuple</i> to append an element to.</dd>
<dt>elem</dt>
<dd> The element to append. </dd>
</dl>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/push_back.html">&lt;boost/preprocessor/tuple/push_back.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/push_back.html">boost/preprocessor/tuple/push_back.hpp</a>&gt;
#define TUPLE (a, b, c)
<a href="tuple_push_back.html">BOOST_PP_TUPLE_PUSH_BACK</a>(TUPLE, d) // expands to (a, b, c, d)
</pre></div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</i> </div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See
accompanyig 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,39 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_TUPLE_PUSH_FRONT</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_PUSH_FRONT</b> macro
appends an element to the beginning of a <i>tuple</i>.</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_PUSH_FRONT</b>(<i>tuple</i>, <i>elem</i>)
<a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
<h4>Arguments</h4>
<dl>
<dt>tuple</dt>
<dd> The <i>tuple</i> to append an element to.</dd>
<dt>elem</dt>
<dd> The element to append. </dd>
</dl>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/push_front.html">&lt;boost/preprocessor/tuple/push_front.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/push_front.html">boost/preprocessor/tuple/push_front.hpp</a>&gt;
#define TUPLE (b, c, d)
<a href="tuple_push_front.html">BOOST_PP_TUPLE_PUSH_FRONT</a>(TUPLE, a) // expands to (a, b, c, d)
</pre></div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</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

@ -13,7 +13,7 @@
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_REM</b>(<i>size</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
<b>BOOST_PP_TUPLE_REM</b>(<i>size</i>) <sup>(v)</sup><br>
</div>
<h4>Arguments</h4>
<dl>
@ -27,13 +27,12 @@ or<br>
<div>
The <i>size</i> argument must be the actual size of the <i>tuple</i> in the non-variadic version.<br>
<br>
For the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a>&nbsp;the
For the variadic version <sup>(v)</sup>&nbsp;the
size may be left out
completely so that the macro can be invoked as BOOST_PP_TUPLE_REM(); you may get a warning from some compilers, but the
functionality will still work. If you specify a size in the variadic
version, it will be ignored, but the warning from some compilers will
not occur.<br>
<br>Note: For Visual C++ 8.0 ( Visual Studio 2005 ) you must specify the correct <i>size</i> argument as in the non-variadic version.<br>
</div>
<h4>See Also</h4>
<ul>
@ -44,12 +43,12 @@ not occur.<br>
<b>Header:</b> &nbsp;<a href="../headers/tuple/rem.html">&lt;boost/preprocessor/tuple/rem.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>#include &lt;<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/rem.hpp</a>&gt;<br><br><a href="tuple_rem.html">BOOST_PP_TUPLE_REM</a>(3)(x, y, z) // expands to x, y, z<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_rem.html">BOOST_PP_TUPLE_REM</a>()(x, y, z) // expands to x, y, z<br></pre></div>
<div><pre>#include &lt;<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/rem.hpp</a>&gt;<br><br><a href="tuple_rem.html">BOOST_PP_TUPLE_REM</a>(3)(x, y, z) // expands to x, y, z<br><br>// or for the variadic version <sup>(v)</sup><br><br><a href="tuple_rem.html">BOOST_PP_TUPLE_REM</a>()(x, y, z) // expands to x, y, z<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<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013</i><br>
</i><i><EFBFBD> Copyright Edward Diener 2011</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See

View File

@ -13,7 +13,7 @@
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_REM_CTOR</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
<b>BOOST_PP_TUPLE_REM_CTOR</b>(<i>...</i>) <sup>(v)</sup><br>
</div>
<h4>Arguments</h4>
<dl>
@ -32,7 +32,7 @@ or<br>
The <i>size</i> argument must be the actual size of <i>tuple</i>.<br>
<br>
You can
invoke the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> as BOOST_PP_TUPLE_REM_CTOR(<i>tuple</i>) or
invoke the variadic version <sup>(v)</sup> as BOOST_PP_TUPLE_REM_CTOR(<i>tuple</i>) or
BOOST_PP_TUPLE_REM_CTOR(<i>size</i>,<i>tuple</i>).<br>
</div>
<h4>See Also</h4>
@ -44,12 +44,12 @@ BOOST_PP_TUPLE_REM_CTOR(<i>size</i>,<i>tuple</i>).<br>
<b>Header:</b> &nbsp;<a href="../headers/tuple/rem.html">&lt;boost/preprocessor/tuple/rem.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>#include &lt;<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/rem.hpp</a>&gt;<br><br><a href="tuple_rem_ctor.html">BOOST_PP_TUPLE_REM_CTOR</a>(3, (x, y, z)) // expands to x, y, z<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_rem_ctor.html">BOOST_PP_TUPLE_REM_CTOR</a>((x, y, z)) // expands to x, y, z<br></pre></div>
<div><pre>#include &lt;<a href="../headers/tuple/elem.html">boost/preprocessor/tuple/rem.hpp</a>&gt;<br><br><a href="tuple_rem_ctor.html">BOOST_PP_TUPLE_REM_CTOR</a>(3, (x, y, z)) // expands to x, y, z<br><br>// or for the variadic version <sup>(v)<br><br></sup><a href="tuple_rem_ctor.html">BOOST_PP_TUPLE_REM_CTOR</a>((x, y, z)) // expands to x, y, z<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<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013</i><br>
</i><i><EFBFBD> Copyright Edward Diener 2011</i><br>
</div>
<div style="margin-left: 0px;">

View File

@ -1,50 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_TUPLE_REMOVE</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_REMOVE</b> macro
removes an element from a <i>tuple</i>.</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_REMOVE</b>(<i>tuple</i>, <i>i</i>) <a
href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
<h4>Arguments</h4>
<dl>
<dt>tuple</dt>
<dd> The <i>tuple</i> from which an element is to be removed.</dd>
<dt>i</dt>
<dd> The zero-based position in <i>tuple</i> of the element to be
removed.&nbsp; Valid values range from <i>0</i> to <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>)
- <i>1</i>. If <i>tuple</i> has only a single element, it remains
unchanged since a&nbsp;<i>tuple </i>must have at least one element.</dd>
</dl>
<h4>Remarks</h4>
<div> This macro uses <b>BOOST_PP_WHILE</b> interally.&nbsp; Therefore, to
use the <i>d</i> parameter passed from other macros that use <b>BOOST_PP_WHILE</b>,
see <b>BOOST_PP_TUPLE_REMOVE_D</b>.</div>
<h4>See Also</h4>
<ul>
<li><a href="tuple_remove_d.html">BOOST_PP_TUPLE_REMOVE_D</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/remove.html">&lt;boost/preprocessor/tuple/remove.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/remove.html">boost/preprocessor/tuple/remove.hpp</a>&gt;
#define TUPLE (a, b, d)
<a href="tuple_remove.html">BOOST_PP_TUPLE_REMOVE</a>(TUPLE, 2) // expands to (a, b)
</pre></div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</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,41 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_TUPLE_REMOVE_D</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_REMOVE_D</b> macro
removes an element from a <i>tuple</i>.&nbsp; It reenters <b>BOOST_PP_WHILE</b>
with maximum efficiency. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_REMOVE_D</b>(<i>d</i>, <i>tuple</i>,
<i>i</i>) <a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
<h4>Arguments</h4>
<dl>
<dt>d</dt>
<dd> The next available <b>BOOST_PP_WHILE</b> iteration. </dd>
<dt>tuple</dt>
<dd> The <i>tuple</i> from which an element is to be removed. </dd>
<dt>i</dt>
<dd> The zero-based position in <i>tuple</i> of the element to be
removed.&nbsp; Valid values range from <i>0</i> to <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>)
- <i>1</i>. If <i>tuple</i> has only a single element, it remains
unchanged since a&nbsp;<i>tuple </i>must have at least one element.</dd>
</dl>
<h4>See Also</h4>
<ul>
<li><a href="tuple_remove.html">BOOST_PP_TUPLE_REMOVE</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/remove.html">&lt;boost/preprocessor/tuple/remove.hpp&gt;</a>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</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,51 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_TUPLE_REPLACE</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_REPLACE</b> macro
replaces an element in a <i>tuple</i>.</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_REPLACE</b>(<i>tuple</i>, <i>i</i>, <i>elem</i>)
<a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
<h4>Arguments</h4>
<dl>
<dt>tuple</dt>
<dd> A <i>tuple</i> to replace an element in. </dd>
<dt>i</dt>
<dd> The zero-based position in <i>tuple</i> of the element to be
replaced.&nbsp; Valid values range from <i>0</i> to <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>)
- <i>1</i>.</dd>
<dt>elem</dt>
<dd> The replacement element. </dd>
</dl>
<h4>Remarks</h4>
<div> This macro uses <b>BOOST_PP_WHILE</b> interally.&nbsp; Therefore, to
use the <i>d</i> parameter passed from other macros that use <b>BOOST_PP_WHILE</b>,
see <b>BOOST_PP_TUPLE_REPLACE_D</b>.</div>
<h4>See Also</h4>
<ul>
<li><a href="tuple_replace_d.html">BOOST_PP_TUPLE_REPLACE_D</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/replace.html">&lt;boost/preprocessor/tuple/replace.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/replace.html">boost/preprocessor/tuple/replace.hpp</a>&gt;
#define TUPLE (a, x, c)
<a href="tuple_replace.html">BOOST_PP_TUPLE_REPLACE</a>(TUPLE, 1, b) // expands to (a, b, c))
</pre></div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</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,42 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_TUPLE_REPLACE_D</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_REPLACE_D</b> macro
replaces an element in a <i>tuple</i>.&nbsp; It reenters <b>BOOST_PP_WHILE</b>
with maximum efficiency.</div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_REPLACE_D</b>(<i>d</i>, <i>tuple</i>,
<i>i</i>, <i>elem</i>) <a href="../topics/variadic_macros.html#VNotation"><sup>(v)</sup></a></div>
<h4>Arguments</h4>
<dl>
<dt>d</dt>
<dd> The next available <b>BOOST_PP_WHILE</b> iteration. </dd>
<dt>tuple</dt>
<dd> A <i>tuple</i> to replace an element in. </dd>
<dt>i</dt>
<dd> The zero-based position in <i>tuple</i> of the element to be
replaced.&nbsp; Valid values range from <i>0</i> to <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>)
- <i>1</i>. </dd>
<dt>elem</dt>
<dd> The replacement element. </dd>
</dl>
<h4>See Also</h4>
<ul>
<li><a href="tuple_replace.html">BOOST_PP_TUPLE_REPLACE</a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/tuple/replace.html">&lt;boost/preprocessor/tuple/replace.hpp&gt;</a>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2013</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

@ -13,7 +13,7 @@
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_REVERSE</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
<b>BOOST_PP_TUPLE_REVERSE</b>(<i>...</i>) <sup>(v)</sup><br>
</div>
<h4>Arguments</h4>
@ -33,7 +33,7 @@ or<br>
The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
<br>
You can
invoke the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> as BOOST_PP_TUPLE_REVERSE(<i>tuple</i>) or
invoke the variadic version <sup>(v)</sup> as BOOST_PP_TUPLE_REVERSE(<i>tuple</i>) or
BOOST_PP_TUPLE_REVERSE(<i>size</i>,<i>tuple</i>).<br>
</div>
<h4>See Also</h4>
@ -45,12 +45,12 @@ BOOST_PP_TUPLE_REVERSE(<i>size</i>,<i>tuple</i>).<br>
<b>Header:</b> &nbsp;<a href="../headers/tuple/reverse.html">&lt;boost/preprocessor/tuple/reverse.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>#include &lt;<a href="../headers/tuple/reverse.html">boost/preprocessor/tuple/reverse.hpp</a>&gt;<br><br><a href="tuple_reverse.html">BOOST_PP_TUPLE_REVERSE</a>(3, (x, y, z)) // expands to (z, y, x)<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_reverse.html">BOOST_PP_TUPLE_REVERSE</a>((x, y, z)) // expands to (z, y, x)<br></pre></div>
<div><pre>#include &lt;<a href="../headers/tuple/reverse.html">boost/preprocessor/tuple/reverse.hpp</a>&gt;<br><br><a href="tuple_reverse.html">BOOST_PP_TUPLE_REVERSE</a>(3, (x, y, z)) // expands to (z, y, x)<br><br>// or for the variadic version <sup>(v)<br><br></sup><a href="tuple_reverse.html">BOOST_PP_TUPLE_REVERSE</a>((x, y, z)) // expands to (z, y, x)<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<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013</i><br>
</i><i><EFBFBD> Copyright Edward Diener 2011</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See

View File

@ -7,7 +7,7 @@
<div style="margin-left: 0px;"> The <b>BOOST_PP_TUPLE_SIZE</b> macro
expands to the size of the <i>tuple</i> passed to it. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
<div class="code"> <b>BOOST_PP_TUPLE_SIZE</b>(<i>tuple</i>) <sup>(v)</sup><br>
</div>
<h4>Arguments</h4>
<dl>
@ -22,7 +22,7 @@ expands to the size of the <i>tuple</i> passed to it. </div>
<pre>#include &lt;<a href="../headers/tuple/size.html">boost/preprocessor/tuple/size.hpp</a>&gt;<br><br>#define TUPLE (x, y, z)<br><br><a href="tuple_size.html">BOOST_PP_TUPLE_SIZE</a>(TUPLE) // expands to 3<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i> </div>
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011</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>

View File

@ -12,7 +12,7 @@ converts a <i>tuple</i> to an <i>array</i>. </div>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_TO_ARRAY</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
<b>BOOST_PP_TUPLE_TO_ARRAY</b>(<i>...</i>) <sup>(v)</sup><br>
</div>
<h4> Arguments </h4>
<dl>
@ -28,7 +28,7 @@ range from <i>1</i> to <b>BOOST_PP_LIMIT_TUPLE</b>. <br>
The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
<br>
You can
invoke the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> as BOOST_PP_TUPLE_TO_ARRAY(<i>tuple</i>) or
invoke the variadic version <sup>(v)</sup> as BOOST_PP_TUPLE_TO_ARRAY(<i>tuple</i>) or
BOOST_PP_TUPLE_TO_ARRAY(<i>size</i>,<i>tuple</i>).<a href="../headers/seq/to_array.html"></a>
</div>
<h4> Requirements </h4>
@ -36,10 +36,10 @@ BOOST_PP_TUPLE_TO_ARRAY(<i>size</i>,<i>tuple</i>).<a href="../headers/seq/to_arr
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/to_array.html">boost/preprocessor/tuple/to_array.hpp</a>&gt;<br><br>#define TUPLE (a,b,c)<br><br><a href="tuple_to_array.html">BOOST_PP_TUPLE_TO_ARRAY</a>(3,TUPLE) // expands to (3, (a, b, c))<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_to_array.html">BOOST_PP_TUPLE_TO_ARRAY</a>(TUPLE) // expands to (3, (a, b, c))<br></pre>
<pre>#include &lt;<a href="../headers/tuple/to_array.html">boost/preprocessor/tuple/to_array.hpp</a>&gt;<br><br>#define TUPLE (a,b,c)<br><br><a href="tuple_to_array.html">BOOST_PP_TUPLE_TO_ARRAY</a>(3,TUPLE) // expands to (3, (a, b, c))<br><br>// or for the variadic version <sup>(v)<br><br></sup><a href="tuple_to_array.html">BOOST_PP_TUPLE_TO_ARRAY</a>(TUPLE) // expands to (3, (a, b, c))<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2011,2013</i>
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2011</i>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0.

View File

@ -13,7 +13,7 @@
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_TO_LIST</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
<b>BOOST_PP_TUPLE_TO_LIST</b>(<i>...</i>) <sup>(v)</sup><br>
</div>
<h4>Arguments</h4>
<dl>
@ -32,7 +32,7 @@ or<br>
The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
<br>
You can
invoke the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> as BOOST_PP_TUPLE_TO_LIST(<i>tuple</i>) or
invoke the variadic version <sup>(v)</sup> as BOOST_PP_TUPLE_TO_LIST(<i>tuple</i>) or
BOOST_PP_TUPLE_TO_LIST(<i>size</i>,<i>tuple</i>).<br>
</div>
<h4>See Also</h4>
@ -44,12 +44,12 @@ BOOST_PP_TUPLE_TO_LIST(<i>size</i>,<i>tuple</i>).<br>
<b>Header:</b> &nbsp;<a href="../headers/tuple/to_list.html">&lt;boost/preprocessor/tuple/to_list.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>#include &lt;<a href="../headers/tuple/to_list.html">boost/preprocessor/tuple/to_list.hpp</a>&gt;<br><br><a href="tuple_to_list.html">BOOST_PP_TUPLE_TO_LIST</a>(3, (x, y, z))<br> // expands to (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_to_list.html">BOOST_PP_TUPLE_TO_LIST</a>((x, y, z))<br> // expands to (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))<br></pre></div>
<div><pre>#include &lt;<a href="../headers/tuple/to_list.html">boost/preprocessor/tuple/to_list.hpp</a>&gt;<br><br><a href="tuple_to_list.html">BOOST_PP_TUPLE_TO_LIST</a>(3, (x, y, z))<br> // expands to (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))<br><br>// or for the variadic version <sup>(v)<br><br></sup><a href="tuple_to_list.html">BOOST_PP_TUPLE_TO_LIST</a>((x, y, z))<br> // expands to (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))<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<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013</i><br>
</i><i><EFBFBD> Copyright Edward Diener 2011</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0. (See

View File

@ -11,7 +11,7 @@ converts a <i>tuple</i> to an <i>seq</i>. </div>
<br>
or<br>
<br>
<b>BOOST_PP_TUPLE_TO_SEQ</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
<b>BOOST_PP_TUPLE_TO_SEQ</b>(<i>...</i>) <sup>(v)</sup><br>
</div>
<h4> Arguments </h4>
<dl>
@ -26,7 +26,7 @@ or<br>
<div> The <i>size</i> argument must be the actual size of the <i>tuple</i>.<br>
<br>
You can
invoke the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> as BOOST_PP_TUPLE_TO_SEQ(<i>tuple</i>) or
invoke the variadic version <sup>(v)</sup> as BOOST_PP_TUPLE_TO_SEQ(<i>tuple</i>) or
BOOST_PP_TUPLE_TO_SEQ(<i>size</i>,<i>tuple</i>).<a href="../headers/tuple/to_seq.html"></a>
</div>
<h4>Requirements </h4>
@ -34,13 +34,13 @@ BOOST_PP_TUPLE_TO_SEQ(<i>size</i>,<i>tuple</i>).<a href="../headers/tuple/to_seq
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/tuple/to_seq.html">boost/preprocessor/tuple/to_seq.hpp</a>&gt;<br><br><a href="tuple_to_seq.html">BOOST_PP_TUPLE_TO_SEQ</a>(3, (a, b, c)) // expands to (a)(b)(c)<br><br>// or for the variadic version <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br><br><a href="tuple_to_seq.html">BOOST_PP_TUPLE_TO_SEQ</a>((a, b, c)) // expands to (a)(b)(c)<br></pre>
<pre>#include &lt;<a href="../headers/tuple/to_seq.html">boost/preprocessor/tuple/to_seq.hpp</a>&gt;<br><br><a href="tuple_to_seq.html">BOOST_PP_TUPLE_TO_SEQ</a>(3, (a, b, c)) // expands to (a)(b)(c)<br><br>// or for the variadic version <sup>(v)<br><br></sup><a href="tuple_to_seq.html">BOOST_PP_TUPLE_TO_SEQ</a>((a, b, c)) // expands to (a)(b)(c)<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<br>
</i><i><EFBFBD> Copyright Edward Diener 2011,2013</i><br>
</i><i><EFBFBD> Copyright Edward Diener 2011</i><br>
</div>
<div style="margin-left: 0px;">
<p><small>Distributed under the Boost Software License, Version 1.0.

View File

@ -7,7 +7,7 @@
<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_ELEM</b> variadic macro
extracts an element from <i>variadic data</i>. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_VARIADIC_ELEM</b>(<i>i</i>, <i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
<div class="code"> <b>BOOST_PP_VARIADIC_ELEM</b>(<i>i</i>, <i>...</i>) <sup>(v)</sup><br>
</div>
<h4>Arguments</h4>
<dl><dt>i</dt>
@ -32,7 +32,7 @@ extracted.&nbsp; Valid values range from <i>0</i> to the size of the variadic da
<pre>#include &lt;<a href="../headers/variadic/elem.html">boost/preprocessor/variadic/elem.hpp</a>&gt;<br><br>#define VAR_DATA a, b, c, d<br><br><a href="variadic_elem.html">BOOST_PP_VARIADIC_ELEM</a>(0, VAR_DATA) // expands to a<br><a href="variadic_elem.html">BOOST_PP_VARIADIC_ELEM</a>(3, VAR_DATA) // expands to d<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i> </div>
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011</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>

View File

@ -1,35 +0,0 @@
<html>
<head>
<title>BOOST_PP_VARIADIC_SEQ_TO_SEQ</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_SEQ_TO_SEQ</b> variadic macro
converts a <i>variadic seq</i> to a <i>seq</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_VARIADIC_SEQ_TO_SEQ</b>(<i>vseq</i>)<a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> </div>
<h4> Arguments </h4>
<dl>
<dt>vseq<br>
</dt>
<dd> The <i>variadic seq</i> to be converted. </dd>
</dl>
<h4> Requirements </h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/seq/variadic_seq_to_seq.html">&lt;boost/preprocessor/seq/variadic_seq_to_seq.hpp&gt;</a>
</div>
<h4> Sample Code </h4>
<div>
<pre>#include &lt;<a href="../headers/seq/variadic_seq_to_seq.html">boost/preprocessor/seq/variadic_seq_to_seq.hpp</a>&gt;<br><br>
<a href="variadic_seq_to_seq.html">BOOST_PP_VARIADIC_SEQ_TO_SEQ</a>((1)(2, 3)(4, 5, 6)) // expands to ((1))((2, 3))((4, 5, 6))<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;">
<i>© Copyright Paul Mensonides 2012</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

@ -7,7 +7,7 @@
<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_SIZE</b> variadic macro
expands to the size of the <i>variadic data </i>passed to it. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_VARIADIC_SIZE</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
<div class="code"> <b>BOOST_PP_VARIADIC_SIZE</b>(<i>...</i>) <sup>(v)</sup><br>
</div>
<h4>Arguments</h4>
<dl>
@ -23,7 +23,7 @@ expands to the size of the <i>variadic data </i>passed to it. </div>
<pre>#include &lt;<a href="../headers/variadic/size.html">boost/preprocessor/variadic/size.hpp</a>&gt;<br><br>#define VAR_DATA x, y, z<br><br><a href="variadic_size.html">BOOST_PP_VARIADIC_SIZE</a>(VAR_DATA) // expands to 3<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i> </div>
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011</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>

View File

@ -7,7 +7,7 @@
<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_ARRAY</b> variadic macro
converts <i>variadic data</i> to an <i>array</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_VARIADIC_TO_ARRAY</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
<div class="code"> <b>BOOST_PP_VARIADIC_TO_ARRAY</b>(<i>...</i>) <sup>(v)</sup><br>
</div>
<h4> Arguments </h4>
<dl>
@ -22,7 +22,7 @@ converts <i>variadic data</i> to an <i>array</i>. </div>
<pre>#include &lt;<a href="../headers/variadic/to_array.html">boost/preprocessor/variadic/to_array.hpp</a>&gt;<br><br>#define VAR_DATA a, b, c<br><br><a href="variadic_to_array.html">BOOST_PP_VARIADIC_TO_ARRAY</a>(VAR_DATA) // expands to (3, (a, b, c))<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i> </div>
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011</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>

View File

@ -7,7 +7,7 @@
<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_LIST</b>
variadic macro converts <i>variadic data</i> to a <i>list</i>. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_VARIADIC_TO_LIST</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
<div class="code"> <b>BOOST_PP_VARIADIC_TO_LIST</b>(<i>...</i>) <sup>(v)</sup><br>
</div>
<h4>Arguments</h4>
<dl><dt>...</dt>
@ -21,7 +21,7 @@ variadic macro converts <i>variadic data</i> to a <i>list</i>. </div>
<pre>#include &lt;<a href="../headers/variadic/to_list.html">boost/preprocessor/variadic/to_list.hpp</a>&gt;<br><br><a href="variadic_to_list.html">BOOST_PP_VARIADIC_TO_LIST</a>(x, y, z)<br> // expands to (x, (y, (z, <a href="nil.html">BOOST_PP_NIL</a>)))<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i> </div>
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011</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>

View File

@ -7,7 +7,7 @@
<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_SEQ</b> variadic macro
converts a <i>variadic data</i> to a <i>seq</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_VARIADIC_TO_SEQ</b>(<i>...</i>) <a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a><br>
<div class="code"> <b>BOOST_PP_VARIADIC_TO_SEQ</b>(<i>...</i>) <sup>(v)</sup><br>
</div>
<h4> Arguments </h4>
<dl><dt>...<br>

View File

@ -7,7 +7,7 @@
<div style="margin-left: 0px;"> The <b>BOOST_PP_VARIADIC_TO_TUPLE</b> variadic macro
converts <i>variadic data </i>to a <i>tuple</i>. </div>
<h4> Usage </h4>
<div class="code"> <b>BOOST_PP_VARIADIC_TO_TUPLE</b>(<i>...</i>)<a href="../topics/variadic_macros.html#VNotation" target="_self"><sup>(v)</sup></a> </div>
<div class="code"> <b>BOOST_PP_VARIADIC_TO_TUPLE</b>(<i>...</i>)<sup> (v)</sup> </div>
<h4> Arguments </h4>
<dl>
<dt>...<br>
@ -22,7 +22,7 @@ converts <i>variadic data </i>to a <i>tuple</i>. </div>
<pre>#include &lt;<a href="../headers/variadic/to_tuple.html">boost/preprocessor/variadic/to_tuple.hpp</a>&gt;<br><br>#define VAR_DATA a, b, c<br><br><a href="variadic_to_tuple.html">BOOST_PP_VARIADIC_TO_TUPLE</a>(VAR_DATA) // expands to (a, b, c)<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011,2013</i> </div>
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011</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>

View File

@ -13,14 +13,14 @@
code to check for the presence of variadic macro support. It can be
used by the end-user for the same purpose. The macro equals 1 if
variadic macros are supported and 0 if they are not. </div><b>Requirements</b>
<div> <b>Header:</b> &nbsp;<a href="../headers/config/variadics.html">&lt;boost/preprocessor/config/config.hpp&gt;</a>
<div> <b>Header:</b> &nbsp;<a href="../headers/config/variadics.html">&lt;boost/preprocessor/config/variadics.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/config/variadics.html">boost/preprocessor/config/config.hpp</a>&gt;<br><br>#if <a href="variadics.html">BOOST_PP_VARIADICS</a><br>#define SOME_MACRO(...) // replacement list<br>#else<br>#define SOME_MACRO(param1,param2) // replacement list<br>#endif<br></pre>
<pre>#include &lt;<a href="../headers/config/variadics.html">boost/preprocessor/config/variadics.hpp</a>&gt;<br><br>#if <a href="variadics.html">BOOST_PP_VARIADICS</a><br>#define SOME_MACRO(...) // replacement list<br>#else<br>#define SOME_MACRO(param1,param2) // replacement list<br>#endif<br></pre>
</div>
<hr size="1">
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011,2014</i> </div>
<div style="margin-left: 0px;"> <i></i><i><EFBFBD> Copyright Edward Diener 2011</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>

View File

@ -1,66 +1,78 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_WHILE_d</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;"> The <b>BOOST_PP_WHILE_<i>d</i></b> macro
represents a reentry into the <b>BOOST_PP_WHILE</b> looping construct. </div>
<h4>Usage</h4>
<div class="code"> <b>BOOST_PP_WHILE_</b> ## <i>d</i>(<i>pred</i>, <i>op</i>,
<i>state</i>) </div>
<h4>Arguments</h4>
<dl>
<dt>d</dt>
<dd> The next available <b>BOOST_PP_WHILE</b> iteration. </dd>
<dt>pred</dt>
<dd> A binary predicate of the form <i>pred</i>(<i>d</i>, <i>state</i>).&nbsp;
This predicate is expanded by <b>BOOST_PP_WHILE</b> with the next
available iteration <i>d</i> and the current <i>state</i>.&nbsp; This
predicate must expand to value in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
The construct continues to loop until this predicate returns <i>0</i>.&nbsp;
When this predicate returns <i>0</i>, <b>BOOST_PP_WHILE</b> returns
the current <i>state</i>. </dd>
<dt>op</dt>
<dd> A binary operation of the form <i>op</i>(<i>d</i>, <i>state</i>).&nbsp;
This operation is expanded by <b>BOOST_PP_WHILE</b> with the next
available iteration <i>d</i> and the current <i>state</i>.&nbsp; This
macro is repeatedly applied to the <i>state</i>, each time producing a
new <i>state</i>, until <i>pred</i> returns <i>0</i>. </dd>
<dt>state</dt>
<dd> The initial state.&nbsp; Often this argument is a <i>tuple</i>. </dd>
</dl>
<h4>Remarks</h4>
<div> This macro iterates <i>op</i>(<i>d</i>, <i>state</i>) while <i>pred</i>(<i>d</i>,
<i>state</i>) is non-zero.&nbsp; In other words expands to:
<div> <i>op</i>(<i>d</i>, ... <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>))
... ). </div>
</div>
<div> At certain times, it may be necessary to perform the concatenation
with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting
operator.&nbsp; This happens when the <i>d</i> value is a macro
invocation itself.&nbsp; It needs a delay to allow it to expand.&nbsp; The
syntax in such a scenario becomes:
<div> <b>BOOST_PP_CAT</b>(<b>BOOST_PP_WHILE_</b>, <i>d</i>)(<i>pred</i>,
<i>op</i>, <i>state</i>). </div>
</div>
<div> Previously, it was possible to concatenate <i>d</i> directly to <b>BOOST_PP_WHILE</b>
(without the trailing underscore).&nbsp; This is no longer supported. </div>
<h4>See Also</h4>
<ul>
<li><a href="cat.html">BOOST_PP_CAT</a></li>
<li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
<li><a href="while.html">BOOST_PP_WHILE</a></li>
<li><a href="while_d_macros.html"><span style="color: gray;">Macros with D
re-entrancy forms</span></a></li>
</ul>
<h4>Requirements</h4>
<div> <b>Header:</b> &nbsp;<a href="../headers/control/while.html">&lt;boost/preprocessor/control/while.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div>
<pre>#include &lt;<a href="../headers/arithmetic/add.html">boost/preprocessor/arithmetic/add.hpp</a>&gt;
<head>
<title>BOOST_PP_WHILE_d</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>
<div style="margin-left: 0px;">
The <b>BOOST_PP_WHILE_<i>d</i></b> macro represents a reentry into the <b>BOOST_PP_WHILE</b> looping construct.
</div>
<h4>Usage</h4>
<div class="code">
<b>BOOST_PP_WHILE_</b> ## <i>d</i>(<i>pred</i>, <i>op</i>, <i>state</i>)
</div>
<h4>Arguments</h4>
<dl>
<dt>d</dt>
<dd>
The next available <b>BOOST_PP_WHILE</b> iteration.
</dd>
<dt>pred</dt>
<dd>
A binary predicate of the form <i>pred</i>(<i>d</i>, <i>state</i>).&nbsp;
This predicate is expanded by <b>BOOST_PP_WHILE</b> with the next available
iteration <i>d</i> and the current <i>state</i>.&nbsp;
This predicate must expand to value in the range of <i>0</i> to <b>BOOST_PP_LIMIT_MAG</b>.
The construct continues to loop until this predicate returns <i>0</i>.&nbsp;
When this predicate returns <i>0</i>, <b>BOOST_PP_WHILE</b> returns the current <i>state</i>.
</dd>
<dt>op</dt>
<dd>
A binary operation of the form <i>op</i>(<i>d</i>, <i>state</i>).&nbsp;
This operation is expanded by <b>BOOST_PP_WHILE</b> with the next available
iteration <i>d</i> and the current <i>state</i>.&nbsp;
This macro is repeatedly applied to the <i>state</i>, each time producing a new <i>state</i>, until <i>pred</i> returns <i>0</i>.
</dd>
<dt>state</dt>
<dd>
The initial state.&nbsp;
Often this argument is a <i>tuple</i>.
</dd>
</dl>
<h4>Remarks</h4>
<div>
This macro iterates <i>op</i>(<i>d</i>, <i>state</i>) while <i>pred</i>(<i>d</i>, <i>state</i>) is non-zero.&nbsp;
In other words expands to:
<div>
<i>op</i>(<i>d</i>, ... <i>op</i>(<i>d</i>, <i>op</i>(<i>d</i>, <i>state</i>)) ... ).
</div>
</div>
<div>
At certain times, it may be necessary to perform the concatenation with <b>BOOST_PP_CAT</b> rather than the preprocessor token-pasting operator.&nbsp;
This happens when the <i>d</i> value is a macro invocation itself.&nbsp;
It needs a delay to allow it to expand.&nbsp;
The syntax in such a scenario becomes:
<div>
<b>BOOST_PP_CAT</b>(<b>BOOST_PP_WHILE_</b>, <i>d</i>)(<i>pred</i>, <i>op</i>, <i>state</i>).
</div>
</div>
<div>
Previously, it was possible to concatenate <i>d</i> directly to <b>BOOST_PP_WHILE</b> (without the trailing underscore).&nbsp;
This is no longer supported.
</div>
<h4>See Also</h4>
<ul>
<li><a href="cat.html">BOOST_PP_CAT</a></li>
<li><a href="limit_mag.html">BOOST_PP_LIMIT_MAG</a></li>
<li><a href="while.html">BOOST_PP_WHILE</a></li>
</ul>
<h4>Requirements</h4>
<div>
<b>Header:</b> &nbsp;<a href="../headers/control/while.html">&lt;boost/preprocessor/control/while.hpp&gt;</a>
</div>
<h4>Sample Code</h4>
<div><pre>
#include &lt;<a href="../headers/arithmetic/add.html">boost/preprocessor/arithmetic/add.hpp</a>&gt;
#include &lt;<a href="../headers/arithmetic/dec.html">boost/preprocessor/arithmetic/dec.hpp</a>&gt;
#include &lt;<a href="../headers/array/elem.html">boost/preprocessor/array/elem.hpp</a>&gt;
#include &lt;<a href="../headers/array/size.html">boost/preprocessor/array/size.hpp</a>&gt;
@ -102,16 +114,16 @@
ACCUMULATE_D(1, ARRAY)// expands to 10
</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<br>
</i><i><EFBFBD> Copyright Edward Diener 2014</i><br>
</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>
<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,89 +0,0 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>BOOST_PP_WHILE_d_macros</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
</head>
<body>This is a list, based on functionality, of the macros which have an
alternate <b>_<i>d</i></b> name, representing a reentry into the <b>BOOST_PP_WHILE</b>
looping construct:<br>
<br>
arithmetic<br>
<ul>
<li><a href="add_d.html"><span style="color: gray;">BOOST_PP_ADD_D</span></a></li>
<li><a href="div_d.html"><span style=" color: gray;">BOOST_PP_DIV_D</span></a></li>
<li><a href="file:///C:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/ref/div_d.html"><span
style=" color: gray;"></span></a><a href="mod_d.html"><span style=" color: gray;">BOOST_PP_MOD_D</span></a></li>
<li><a href="file:///C:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/ref/mod_d.html"><span
style=" color: gray;"></span></a><a href="mul_d.html"><span
style=" color: gray;">BOOST_PP_MUL_D</span></a></li>
<li><a href="file:///C:/Programming/VersionControl/modular-boost/libs/preprocessor/doc/ref/mul_d.html"><span
style=" color: gray;"></span></a><a href="sub_d.html"><span
style=" color: gray;">BOOST_PP_SUB_D</span></a></li>
</ul>
array<br>
<ul>
<li><a href="array_insert_d.html"><span style="color: gray;">BOOST_PP_ARRAY_INSERT_D</span></a></li>
<li><span style=" color: gray;"><a href="array_remove_d.html">BOOST_PP_ARRAY_REMOVE_D</a></span></li>
<li><a href="array_replace_d.html"><span style=" color: gray;">BOOST_PP_ARRAY_REPLACE_D</span></a></li>
</ul>
comparison<br>
<ul>
<li><a href="equal_d.html"><span style=" color: gray;">BOOST_PP_EQUAL_D</span></a></li>
<li><a href="greater_d.html"><span style=" color: gray;">BOOST_PP_GREATER_D</span></a></li>
<li><a href="greater_equal_d.html"><span style=" color: gray;">BOOST_PP_GREATER_EQUAL_D</span></a></li>
<li><a href="less_d.html"><span style=" color: gray;">BOOST_PP_LESS_D</span></a></li>
<li><a href="less_equal_d.html"><span style=" color: gray;">BOOST_PP_LESS_EQUAL_D</span></a></li>
<li><a href="not_equal_d.html"><span style=" color: gray;">BOOST_PP_NOT_EQUAL_D</span></a></li>
</ul>
control<br>
<ul>
<li><a href="deduce_d.html"><span style=" color: gray;">BOOST_PP_DEDUCE_D</span></a></li>
</ul>
list<br>
<ul>
</ul>
<ul>
<li><a href="list_append_d.html"><span style=" color: gray;">BOOST_PP_LIST_APPEND_D</span></a></li>
<li><a href="list_at_d.html"><span style=" color: gray;">BOOST_PP_LIST_AT_D</span></a></li>
<li><a href="list_cat_d.html"><span style=" color: gray;">BOOST_PP_LIST_CAT_D</span></a></li>
<li><a href="list_filter_d.html"><span style=" color: gray;">BOOST_PP_LIST_FILTER_D</span></a></li>
<li><a href="list_first_n_d.html"><span style=" color: gray;">BOOST_PP_LIST_FIRST_N_D</span></a></li>
<li><a href="list_fold_left_d.html"><span style=" color: gray;">BOOST_PP_LIST_FOLD_LEFT_d</span></a></li>
<li><a href="list_fold_right_d.html"><span style=" color: gray;">BOOST_PP_LIST_FOLD_RIGHT_d</span></a></li>
<li><a href="list_rest_n_d.html"><span style=" color: gray;">BOOST_PP_LIST_REST_N_D</span></a></li>
<li><a href="list_reverse_d.html"><span style=" color: gray;">BOOST_PP_LIST_REVERSE_D</span></a></li>
<li><a href="list_size_d.html"><span style=" color: gray;">BOOST_PP_LIST_SIZE_D</span></a></li>
<li><a href="list_to_array_d.html"><span style=" color: gray;">BOOST_PP_LIST_TO_ARRAY_D</span></a></li>
<li><a href="list_transform_d.html"><span style=" color: gray;">BOOST_PP_LIST_TRANSFORM_D</span></a></li>
</ul>
selection<br>
<ul>
<li><a href="max_d.html"><span style=" color: gray;">BOOST_PP_MAX_D</span></a></li>
<li><a href="min_d.html"><span style=" color: gray;">BOOST_PP_MIN_D</span></a></li>
</ul>
repetition<br>
<ul>
<li><a href="repeat_from_to_d.html"><span style=" color: gray;">BOOST_PP_REPEAT_FROM_TO_D</span></a></li>
<li><a href="repeat_from_to_d_z.html"><span style=" color: gray;">BOOST_PP_REPEAT_FROM_TO_D_z</span></a></li>
</ul>
tuple<br>
<ul>
<li><a href="tuple_insert_d.html"><span style=" color: gray;">BOOST_PP_TUPLE_INSERT_D</span></a></li>
<li><a href="tuple_remove_d.html"><span style=" color: gray;">BOOST_PP_TUPLE_REMOVE_D</span></a></li>
<li><a href="tuple_replace_d.html"><span style=" color: gray;">BOOST_PP_TUPLE_REPLACE_D</span></a></li>
</ul>
base<br>
<ul>
<li><a href="while_d.html"><span style=" color: gray;">BOOST_PP_WHILE_D</span></a></li>
</ul>
<br>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright Edward Diener 2014</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,25 +1,22 @@
<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>
<body>
<h4>Introduction</h4>
<div> The Boost Preprocessing library is a library of macros, with support
for preprocessor metaprogramming. The library supports both C++ and C
compilation. It does not depend on any other Boost libraries and therefore
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 <a href="AppendixA-AnIntroductiontoPreprocessorMetaprogramming.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 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>
<head>
<title>title.html</title>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<h4>Introduction</h4>
<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></font></b></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
<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>

View File

@ -1,262 +1,242 @@
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
<title>variadic_macros.html</title>
<link rel="stylesheet" type="text/css" href="../styles.css">
<link rel="stylesheet" type="text/css" href="../styles.css">
<style>
u { font-weight: normal; text-decoration: none; }
</style>
</head>
<body>
<h4>Variadic Macros</h4>
<div> Variadic macros are supported by a number of compilers. They are
macros of the form: </div>
<div class="code">
<pre>#define SOME_MACRO(ZeroOrMoreParameters,...) macro expansion possible specifying __VA_ARGS__</pre>
</div>
<div> The '...' in the parameter list represents the variadic data when the
macro is invoked and the __VA_ARGS__ in the expansion represents the
variadic data in the expansion of the macro. Variadic data is of the form
of 1 or more preprocessor tokens separated by commas.<br>
<br>
The '...' must be the last parameter in the macro definition and there may
be 0 or more non-variadic parameters preceding it.<br>
<br>
In the expansion of the macro __VA_ARGS__ may be specified 0 or more times
to represent the variadic data. The variadic data in the expansion is a
comma separated list of preprocessor tokens representing the variadic data
which the invoker of the macro enters as the last arguments to the macro.<br>
</div>
<h4>Example<u> - Creating and invoking a variadic macro.</u></h4>
<div class="code">
<pre>#define INITIALIZE_INT_ARRAY(array_name,...) \ <br> static int array_name[] = { __VA_ARGS__ }; \ <br> /**/<br><br> INITIALIZE_INT_ARRAY(myname,45,789,33510,9346,2)</pre>
</div>
<u> <span style="font-weight: bold;">Preprocessor
Library Support<br>
</span></u>
<div>The library offers support for variadic macros for those
compilers
which support the feature. The library can automatically detect whether
a compiler supports variadic macros and sets the macro
BOOST_PP_VARIADICS accordingly to 1 if the compiler supports variadic
macros or 0 if the compiler does not support variadic macros.<br>
<br>
The end-user can #define BOOST_PP_VARIADICS to 1 or 0 himself in a
translation unit, before including any preprocessor header files, to
prevent the library from attempting to detect whether the compiler
supports variadic macros. This has the effect of manually turning on or
off variadic macro support in the library. Of course if one manually
turns on variadic macro support in the library, and one's compiler does
not support variadic macros, functionality in the library which uses
variadic macros will fail with error messages from the compiler.<br>
<br>
When BOOST_PP_VARIADICS is 1, the library offers some extended
functionality
by using variadic macros, and also offers extended support for working
with variadic data.<br><br>
<a name="vmvcquirk"></a>Visual C++ has a
few quirks related to variadic macros which require the end-user to code
slightly differently. When BOOST_PP_VARIADICS is 1 and Visual C++ is the
compiler BOOST_PP_VARIADICS_MSVC is 1, else when BOOST_PP_VARIADICS is 1
and Visual C++ is not the compiler BOOST_PP_VARIADICS_MSVC is 0. When
BOOST_PP_VARIADICS is 0 then BOOST_PP_VARIADICS_MSVC is not defined.
In this way the end-user, when using variadic macros, can test for the
presence of Visual C++ as the compiler and code accordingly.<br>
<br>
Support for working with variadic
data is largely centered on being able to convert variadic data to
other library data types, since the
functionality for working with those Boost preprocessor library data
types is much greater than that for working with variadic data directly.<br>
</div>
<a name="VNotation"></a>
<h4>Notation For Variadic Macros<br>
</h4>
<div>In the documentation, headers which have variadic macros,
and
variadic macros themselves, have a notation of '(v)' appended to them.
For the variadic macros themselves this signifies that
BOOST_PP_VARIADICS must be 1 for those variadic macros to be usable.
For variadic macros which have a non-variadic equivalent, the
non-variadic equivalent will be used if BOOST_PP_VARIADICS is set to 0.
</div>
<h4>Extended Functionality Using Variadic Macros<br>
</h4>
<div>Some macros in the library offer extended
functionality through the use of variadic macros.<br>
<br>
The variadic macro version offers the same functionality
as the non-variadic version, but because of the ability of the variadic
parameters to encompass a variable number of arguments, it also offers
an enhanced syntax using the same macro name.<br>
<br>
The macros in the library which offer this enhanced functionality are
all
centered on <i>tuple</i> manipulation. With variadic
macros it is
possible to
manipulate tuples without having to know the size of the tuple. So
while the invoker can still specify the size when using tuple macro
functionality, there are variadic versions of each of the tuple macros,
with the exact same name as the non-variadic macro, where the size need
not be specified.<br>
</div>
<h4>Extended Support For Variadic Data</h4>
<div>The library offers extended support for working with
variadic data
which goes beyond the functionality offered by the C++ specification
for variadic macros. It does this through preprocessor programming and
by using some of the other functionality in the library itself. Header
and macro names
in the library which offer extended support for working with variadic
data, and need the compiler to support variadic macros, are marked with
a (v)<sup> </sup>to indicate a variadic macro.<br>
<br>
The form of the functionality which the library offers is centered on
two macros which work with variadic data itself, and a set of macros
which convert between variadic data and other library data
types.<br>
<br>
The two macros are BOOST_PP_VARIADIC_ELEM and BOOST_PP_VARIADIC_SIZE,
which respectively return a particular token of variadic data and the
number of tokens of variadic data.<br>
<br>
The macros for converting variadic data to the library's data types are
BOOST_PP_VARIADIC_TO_ARRAY, BOOST_PP_VARIADIC_TO_LIST,
BOOST_PP_VARIADIC_TO_SEQ, and BOOST_PP_VARIADIC_TO_TUPLE.<br>
<br>
All of these macros need compiler support for variadic data and only
exist if BOOST_PP_VARIADICS is 1. <br>
<br>
The remaining four macros, which convert from a library data type
to comma-separated preprocessor tokens, which is the form of
variadic data, do not need compiler support for variadic
macros. These functions are BOOST_PP_ARRAY_ENUM, BOOST_PP_LIST_ENUM,
BOOST_PP_SEQ_ENUM, and BOOST_PP_TUPLE_ENUM. However if one wishes to
use this variadic data reliably as arguments to other macros, one needs
variadic macro support.<br>
</div>
<u style="font-weight: bold;"> Using a Tuple Instead of an Array<br>
</u>
<div>An array as a preprocessor data type is a two-element tuple where the
first element is the array size and the second element is a tuple which
constitutes the array data. Because a tuple knows its own size when the
compiler supports variadic macros, there is no reason to use the array preprocessor
data type as opposed to the tuple preprocessor data type; the tuple data
type now has all of the functionality which the array data type has and is
syntactically easier to use. With variadic macro support, which is now
officially part of the latest C++ standard, the preprocessor array data
type is essentially obsolete for conforming C++ compilers. Only if your
compiler does not support variadic macros is the preprocessor array data
type still useful.</div>
<u style="font-weight: bold;">Using Variadic Data</u>
<div>Variadic data exists in the
form of comma-separated preprocessor tokens. This is the case whether
the variadic data comes from the __VA_ARGS__ of a variadic macro, from
the conversion of a library's data type to variadic data, or the
manual construction of comma-separated preprocessing tokens by the
programmer writing a macro.<br>
<br>
The easiest way to work with
variadic data internally is to convert it to a library data type.
Library data types, whether an <i>array</i>, <i>list</i>,
<i>sequence</i>,
or <i>tuple</i>, have a rich set of functionality for
manipulating
data whereas
variadic data functionality in the library only allows one to access
the variadic data as a whole or to access a single token of the
variadic data at a time.<br>
<br>
The user of the library still may
choose to pass variadic data back into internal macros rather than
convert it to other library data types. There is no problem passing
variadic data as a whole to variadic macros as the last parameter of
the macro. However: <br>
<br>
<span style="font-weight: bold;">Attempting to pass
variadic data as a
whole directly into a non-variadic macro is not guaranteed to work and
may fail.<br>
</span><br>
This occurs because of a preprocessor weakness in a number
of compilers, currently most notably Visual C++. Even passing variadic
data as arguments to a non-variadic macro, when it is not represented
in
the form of<6F> __VA_ARGS__, may fail with certain compilers.<br>
<br>
What follows are very simple examples, showing how variadic data can be
passed to a non-variadic macro.<br>
<br>
First an example of what NOT to do.<br>
</div>
<h4>Example<u> - Passing variadic data as a whole to a
non-variadic
macro. DO NOT DO.</u></h4>
<div class="code">
<pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following should not be done and is not guaranteed to work with compilers. */<br><br><span
style="font-weight: bold;"><span style="font-family: monospace;"></span></span>int xx = MACRO_ARG_2(VAR_MACRO(2,3));</pre>
</div>
<div> There are two ways to pass variadic data to a non-variadic
macro.
The
first of these is to pass the individual tokens of the variadic data
separately to the non-variadic macro using the BOOST_PP_VARIADIC_ELEM
macro in the library.<br>
</div>
<h4>Example<u> - Passing individual variadic data tokens to
a
non-variadic macro.<br>
</u></h4>
<div class="code">
<pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following will work correctly */<br><br>int xx = MACRO_ARG_2<br> (<br> BOOST_PP_VARIADIC_ELEM(0,VAR_MACRO(2,3)),<br> BOOST_PP_VARIADIC_ELEM(1,VAR_MACRO(2,3))<br> );</pre>
</div>
<div>The second way is to use a macro in the library called
BOOST_PP_OVERLOAD.
This macro allows one to "overload" a variadic macro to non-variadic
macros of different numbers of parameters, using a common prefix.
</div>
<h4>Example<u> - Passing variadic data as a whole to
BOOST_PP_OVERLOAD
and on to a non-variadic macro.<br>
</u></h4>
<div class="code">
<pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following will work correctly */<br><br>int xx = BOOST_PP_OVERLOAD(MACRO_ARG_,VAR_MACRO(2,3))(VAR_MACRO(2,3));<br><br>/* For Visual C++ it is necessary to do this */<br><br>int xx = <br>BOOST_PP_CAT(BOOST_PP_OVERLOAD(MACRO_ARG_,VAR_MACRO(2,3))(VAR_MACRO(2,3)),BOOST_PP_EMPTY());</pre>
</div>
<br>
<div>Although these techniques will work when passing variadic
data to
non-variadic macros, it is much better and less problematical to
work internally with the existing library data types and to only use
variadic
macros as an interface for end-users when there is a need to have a
macro which takes a
variable number of parameters.<br>
</div>
<b>See</b> <b>Also</b><br>
<ul>
<li><a href="../ref/variadics.html">BOOST_PP_VARIADICS</a></li>
<li><a href="../headers/tuple.html">Tuple Macros</a><br>
</li>
<li><a href="../headers/variadic.html">Variadic
Macros<br>
</a></li>
<li><a href="../ref/array_enum.html">BOOST_PP_ARRAY_ENUM</a></li>
<li><a href="../ref/list_enum_r.html">BOOST_PP_LIST_ENUM</a></li>
<li><a href="../ref/seq_enum.html">BOOST_PP_SEQ_ENUM</a></li>
<li><a href="../ref/tuple_enum.html">BOOST_PP_TUPLE_ENUM</a></li>
<li><a href="../ref/overload.html">BOOST_PP_OVERLOAD</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright
Edward Diener
2011,2013,2016</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>
<h4>Variadic Macros</h4>
<div> Variadic macros are supported by a number of compilers.
They are
macros of the form:
</div>
<div class="code">
<pre>#define SOME_MACRO(ZeroOrMoreParameters,...) macro expansion possible specifying __VA_ARGS__<br></pre>
</div>
<div> The '...' in the parameter list represents the variadic
data when the macro is invoked and the __VA_ARGS__ in the expansion
represents the variadic data in the expansion of the macro. Variadic
data is of the form of 1 or more preprocessor tokens separated by
commas.<br>
<br>
The '...' must be the last parameter in the macro definition and there
may be 0 or more non-variadic parameters preceding it.<br>
<br>
In the expansion of the macro __VA_ARGS__ may be specified 0 or more
times to represent the variadic data. The variadic data in the
expansion is a comma separated list of preprocessor tokens representing
the variadic data which the invoker of the macro enters as the last
arguments to the macro.<br>
</div>
<h4>Example<u> - Creating and invoking a variadic macro.</u></h4>
<div class="code">
<pre>#define INITIALIZE_INT_ARRAY(array_name,...) \ <br> static int array_name[] = { __VA_ARGS__ }; \ <br> /**/<br><br> INITIALIZE_INT_ARRAY(myname,45,789,33510,9346,2)<br></pre>
</div>
<u> <span style="font-weight: bold;">Preprocessor
Library Support<br>
</span></u>
<div>The library offers support for variadic macros for those
compilers
which support the feature. The library can automatically detect whether
a compiler supports variadic macros and sets the macro
BOOST_PP_VARIADICS accordingly to 1 if the compiler supports variadic
macros or 0 if the compiler does not support variadic macros.<br>
<br>
The end-user can #define BOOST_PP_VARIADICS to 1 or 0 himself in a
translation unit, before including any preprocessor header files, to
prevent the library from attempting to detect whether the compiler
supports variadic macros. This has the effect of manually turning on or
off variadic macro support in the library. Of course if one manually
turns on variadic macro support in the library, and one's compiler does
not support variadic macros, functionality in the library which uses
variadic macros will fail with error messages from the compiler.<br>
<br>
When BOOST_PP_VARIADICS is 1, the library offers some extended
functionality
by using variadic macros, and also offers extended support for working
with variadic data.<br>
<br>
Support for working with variadic
data is largely centered on being able to convert variadic data to
other library data types, since the
functionality for working with those Boost preprocessor library data
types is much greater than that for working with variadic data directly.<br>
</div>
<h4>Notation For Variadic Macros<br>
</h4>
<div>In the documentation, headers which have variadic macros,
and
variadic macros themselves, have a notation of '(v)' appended to them.
For the variadic macros themselves this signifies that
BOOST_PP_VARIADICS must be 1 for those variadic macros to be usable.
For variadic macros which have a non-variadic equivalent, the
non-variadic equivalent will be used if BOOST_PP_VARIADICS is set to 0
and the non-variadic version of the
macro does not have a '(v)' appended to its name in the documentation.
</div>
<h4>Extended Functionality Using Variadic Macros<br>
</h4>
<div>Some macros in the library offer extended
functionality through the use of variadic macros.<br>
<br>
The variadic macro version offers the same functionality
as the non-variadic version, but because of the ability of the variadic
parameters to encompass a variable number of arguments, it also offers
an enhanced syntax using the same macro name.<br>
<br>
The macros in the library which offer this enhanced functionality are
all
centered on <i>tuple</i> manipulation. With variadic
macros it is
possible to
manipulate tuples without having to know the size of the tuple. So
while the invoker can still specify the size when using tuple macro
functionality, there are variadic versions of each of the tuple macros,
with the exact same name as the non-variadic macro, where the size need
not be specified.<br>
</div>
<h4>Extended Support For Variadic Data</h4>
<div>The library offers extended support for working with
variadic data
which goes beyond the functionality offered by the C++ specification
for variadic macros. It does this through preprocessor programming and
by using some of the other functionality in the library itself. Header
and macro names
in the library which offer extended support for working with variadic
data, and need the compiler to support variadic macros, are marked with
a (v)<sup> </sup>to indicate a variadic macro.<br>
<br>
The form of the functionality which the library offers is centered on
two macros which work with variadic data itself, and a set of macros
which convert between variadic data and other library data
types.<br>
<br>
The two macros are BOOST_PP_VARIADIC_ELEM and BOOST_PP_VARIADIC_SIZE,
which respectively return a particular token of variadic data and the
number of tokens of variadic data.<br>
<br>
The macros for converting variadic data to the library's data types are
BOOST_PP_VARIADIC_TO_ARRAY, BOOST_PP_VARIADIC_TO_LIST,
BOOST_PP_VARIADIC_TO_SEQ, and BOOST_PP_VARIADIC_TO_TUPLE.<br>
<br>
All of these macros need compiler support for variadic data and only
exist if BOOST_PP_VARIADICS is 1. <br>
<br>
The remaining four macros, which convert from a library data type
to comma-separated preprocessor tokens, which is the form of
variadic data, do not need compiler support for variadic
macros. These functions are BOOST_PP_ARRAY_ENUM, BOOST_PP_LIST_ENUM,
BOOST_PP_SEQ_ENUM, and BOOST_PP_TUPLE_ENUM. However if one wishes to
use this variadic data reliably as arguments to other macros, one needs
variadic macro support.<br>
</div>
<u style="font-weight: bold;"> Using Variadic Data</u>
<div>Variadic data exists in the
form of comma-separated preprocessor tokens. This is the case whether
the variadic data comes from the __VA_ARGS__ of a variadic macro, from
the conversion of a library's data type to variadic data, or the
manual construction of comma-separated preprocessing tokens by the
programmer writing a macro.<br>
<br>
The easiest way to work with
variadic data internally is to convert it to a library data type.
Library data types, whether an <i>array</i>, <i>list</i>,
<i>sequence</i>,
or <i>tuple</i>, have a rich set of functionality for
manipulating
data whereas
variadic data functionality in the library only allows one to access
the variadic data as a whole or to access a single token of the
variadic data at a time.<br>
<br>
The user of the library still may
choose to pass variadic data back into internal macros rather than
convert it to other library data types. There is no problem passing
variadic data as a whole to variadic macros as the last parameter of
the macro. However: <br>
<br>
<span style="font-weight: bold;">Attempting to pass
variadic data as a
whole directly into a non-variadic macro is not guaranteed to work and
may fail.<br>
</span><br>
This occurs because of a preprocessor weakness in a number
of compilers, currently most notably Visual C++. Even passing variadic
data as arguments to a non-variadic macro, when it is not represented
in
the form of&nbsp; __VA_ARGS__, may fail with certain compilers.<br>
<br>
What follows are very simple examples, showing how variadic data can be
passed to a non-variadic macro.<br>
<br>
First an example of what NOT to do.<br>
</div>
<h4>Example<u> - Passing variadic data as a whole to a
non-variadic
macro. DO NOT DO.</u></h4>
<div class="code">
<pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following should not be done and is not guaranteed to work with compilers. */<br><br><span style="font-weight: bold;"><span style="font-family: monospace;"></span></span>int xx = MACRO_ARG_2(VAR_MACRO(2,3));<br></pre>
</div>
<div> There are two ways to pass variadic data to a non-variadic
macro.
The
first of these is to pass the individual tokens of the variadic data
separately to the non-variadic macro using the BOOST_PP_VARIADIC_ELEM
macro in the library.<br>
</div>
<h4>Example<u> - Passing individual variadic data tokens to
a
non-variadic macro.<br>
</u></h4>
<div class="code">
<pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following will work correctly */<br><br>int xx = MACRO_ARG_2<br> (<br> BOOST_PP_VARIADIC_ELEM(0,VAR_MACRO(2,3)),<br> BOOST_PP_VARIADIC_ELEM(1,VAR_MACRO(2,3))<br> );</pre>
</div>
<div>The second way is to use a macro in the library called
BOOST_PP_OVERLOAD.
This macro allows one to "overload" a variadic macro to non-variadic
macros of different numbers of parameters, using a common prefix.
</div>
<h4>Example<u> - Passing variadic data as a whole to
BOOST_PP_OVERLOAD
and on to a non-variadic macro.<br>
</u></h4>
<div class="code">
<pre>#define MACRO_ARG_2(x,y) BOOST_PP_ADD(x,y)<br>#define VAR_MACRO(...) __VA_ARGS__<br><br>/* The following will work correctly */<br><br>int xx = BOOST_PP_OVERLOAD(MACRO_ARG_,VAR_MACRO(2,3))(VAR_MACRO(2,3));<br><br>/* For Visual C++ it is necessary to do this */<br><br>int xx = <br>BOOST_PP_CAT(BOOST_PP_OVERLOAD(MACRO_ARG_,VAR_MACRO(2,3))(VAR_MACRO(2,3)),BOOST_PP_EMPTY());</pre>
</div><br>
<div>Although these techniques will work when passing variadic
data to
non-variadic macros, it is much better and less problematical to
work internally with the existing library data types and to only use
variadic
macros as an interface for end-users when there is a need to have a
macro which takes a
variable number of parameters.<br>
</div>
<b>See</b> <b>Also</b><br>
<ul>
<li><a href="../ref/variadics.html">BOOST_PP_VARIADICS</a></li>
<li><a href="../headers/tuple.html">Tuple Macros</a><br>
</li>
<li><a href="../headers/variadic.html">Variadic
Macros<br>
</a></li>
<li><a href="../ref/array_enum.html">BOOST_PP_ARRAY_ENUM</a></li>
<li><a href="../ref/list_enum_r.html">BOOST_PP_LIST_ENUM</a></li>
<li><a href="../ref/seq_enum.html">BOOST_PP_SEQ_ENUM</a></li>
<li><a href="../ref/tuple_enum.html">BOOST_PP_TUPLE_ENUM</a></li>
<li><a href="../ref/overload.html">BOOST_PP_OVERLOAD</a></li>
</ul>
<hr size="1">
<div style="margin-left: 0px;"> <i><EFBFBD> Copyright
Edward Diener
2011</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>

Some files were not shown because too many files have changed in this diff Show More