]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/preprocessor/doc/ref/seq_nil.html
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / preprocessor / doc / ref / seq_nil.html
CommitLineData
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>.&nbsp;
9 It is only valid if it's elements are appended to the end of this empty
10 "seq."&nbsp;
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.&nbsp; It is <i>not</i> a nil <i>seq</i>.&nbsp; When an element is
24 appended to this macro, it expands on the element and to the element--thereby
25 removing itself.&nbsp; 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>.&nbsp; After all the elements have been
36 prepended, empty parenthesis can be invoked on the tail to remove the <b>BOOST_PP_EMPTY</b>.&nbsp;
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.&nbsp;
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> &nbsp;<a href="../headers/seq/seq.html">&lt;boost/preprocessor/seq/seq.hpp&gt;</a>
61 </div>
62 <h4>
63 Sample Code
64 </h4>
65 <div>
66 <pre>#include &lt;<a href="../headers/facilities/empty.html">boost/preprocessor/facilities/empty.hpp</a>&gt;<br>#include &lt;<a href="../headers/seq/push_back.html">boost/preprocessor/seq/push_back.hpp</a>&gt;<br>#include &lt;<a href="../headers/seq/push_front.html">boost/preprocessor/seq/push_front.hpp</a>&gt;<br>#include &lt;<a href="../headers/seq/seq.html">boost/preprocessor/seq/seq.hpp</a>&gt;<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