]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | <html> |
2 | <head> | |
3 | <title>BOOST_PP_SEQ_NIL</title> | |
4 | <link rel="stylesheet" type="text/css" href="../styles.css"> | |
5 | </head> | |
6 | <body> | |
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 | |
10 | "seq." | |
11 | </div> | |
12 | <h4> | |
13 | Usage | |
14 | </h4> | |
15 | <div class="code"> | |
16 | <b>BOOST_PP_SEQ_NIL</b> | |
17 | </div> | |
18 | <h4> | |
19 | Remarks | |
20 | </h4> | |
21 | <div> | |
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>. | |
27 | </div> | |
28 | <div> | |
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. | |
32 | </div> | |
33 | <div> | |
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>) | |
39 | is undefined. | |
40 | </div> | |
41 | <div> | |
42 | (It is also possible to start with an extra element and pop it off when you | |
43 | have finished appending to it.) | |
44 | </div> | |
45 | <div> | |
46 | In C99, neither of these macros are necessary since it is legal to pass empty | |
47 | arguments. | |
48 | </div> | |
49 | <h4> | |
50 | See Also | |
51 | </h4> | |
52 | <ul> | |
53 | <li> | |
54 | <a href="empty.html">BOOST_PP_EMPTY</a></li> | |
55 | </ul> | |
56 | <h4> | |
57 | Requirements | |
58 | </h4> | |
59 | <div> | |
60 | <b>Header:</b> <a href="../headers/seq/seq.html"><boost/preprocessor/seq/seq.hpp></a> | |
61 | </div> | |
62 | <h4> | |
63 | Sample Code | |
64 | </h4> | |
65 | <div> | |
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> | |
69 | </div> | |
70 | <hr size="1"> | |
71 | <div style="margin-left: 0px;"> | |
72 |