3 <title>BOOST_PP_SEQ_NIL
</title>
4 <link rel=
"stylesheet" type=
"text/css" href=
"../styles.css">
7 <div style=
"margin-left: 0px;">
8 The
<b>BOOST_PP_SEQ_NIL
</b> macro is a placeholder macro for an empty
<i>seq
</i>.
9 It is only valid if it's elements are appended to the end of this empty
16 <b>BOOST_PP_SEQ_NIL
</b>
22 This macro is a utility macro intended as a empty starting point for appending
23 to the tail.
It is
<i>not
</i> a nil
<i>seq
</i>.
When an element is
24 appended to this macro, it expands on the element and to the element--thereby
25 removing itself.
For example, both
<b>BOOST_PP_SEQ_NIL
</b>(
<i>x
</i>) and
<b>BOOST_PP_SEQ_PUSH_BACK
</b>(
<b>BOOST_PP_SEQ_NIL
</b>,
26 <i>x
</i>) expand to
<i>x
</i>.
29 If any
<b>BOOST_PP_SEQ_
</b>* macro (other than
<b>BOOST_PP_SEQ_PUSH_BACK
</b>)
30 is invoked with an argument that contains
<b>BOOST_PP_SEQ_NIL
</b>, the behavior
31 is undefined and in most cases will result in obscure errors.
34 The closest thing available to
<b>BOOST_PP_SEQ_NIL
</b> for appending to the
35 head is
<b>BOOST_PP_EMPTY
</b>.
After all the elements have been
36 prepended, empty parenthesis can be invoked on the tail to remove the
<b>BOOST_PP_EMPTY
</b>.
37 As with
<b>BOOST_PP_SEQ_NIL
</b>, passing an argument that contains
<b>BOOST_PP_EMPTY
</b>
38 to any
<b>BOOST_PP_SEQ_
</b>* macro (other than
<b>BOOST_PP_SEQ_PUSH_FRONT
</b>)
42 (It is also possible to start with an extra element and pop it off when you
43 have finished appending to it.)
46 In C99, neither of these macros are necessary since it is legal to pass empty
54 <a href=
"empty.html">BOOST_PP_EMPTY
</a></li>
60 <b>Header:
</b> <a href=
"../headers/seq/seq.html"><boost/preprocessor/seq/seq.hpp
></a>
66 <pre>#include
<<a href=
"../headers/facilities/empty.html">boost/preprocessor/facilities/empty.hpp
</a>><br>#include
<<a href=
"../headers/seq/push_back.html">boost/preprocessor/seq/push_back.hpp
</a>><br>#include
<<a href=
"../headers/seq/push_front.html">boost/preprocessor/seq/push_front.hpp
</a>><br>#include
<<a href=
"../headers/seq/seq.html">boost/preprocessor/seq/seq.hpp
</a>><br><br>#define SEQ_L
<a href=
"seq_nil.html">BOOST_PP_SEQ_NIL
</a>
67 #define SEQ_R
<a href=
"empty.html">BOOST_PP_EMPTY
</a>
68 <a href=
"seq_push_back.html">BOOST_PP_SEQ_PUSH_BACK
</a>(
<br> <a href=
"seq_push_back.html">BOOST_PP_SEQ_PUSH_BACK
</a>(SEQ_L, a), b
<br>)
<br><br>// expands to (a)(b)
<br><br><a href=
"seq_push_front.html">BOOST_PP_SEQ_PUSH_FRONT
</a>(
<br> <a href=
"seq_push_front.html">BOOST_PP_SEQ_PUSH_FRONT
</a>(SEQ_R, a), b
<br>)()
<br><br>// expands to (b)(a)
<br></pre>
71 <div style=
"margin-left: 0px;">
72 <i>© Copyright
<a href=
"http://www.housemarque.com" target=
"_top">Housemarque Oy
</a> 2002</i>
73 <br><i>© Copyright Paul Mensonides
2002</i>
75 <div style=
"margin-left: 0px;">
76 <p><small>Distributed under the Boost Software License, Version
1.0. (See
77 accompanying file
<a href=
"../../../../LICENSE_1_0.txt">LICENSE_1_0.txt
</a> or
78 copy at
<a href=
"http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt
</a>)
</small></p>