|
115 | 115 | <a href='expr.const#nt:constant-expression' title='7.7 Constant expressions [expr.const]'><span id='ntref:constant-expression_'><span class='textsf'><i >constant-expression</i></span></span></a> using the rules as described in conditional |
116 | 116 | inclusion (<a href='cpp.cond' title='15.2 Conditional inclusion'>[cpp.<span class='shy'></span>cond]</a>), but without being processed as in normal text an |
117 | 117 | additional time<a class='hidden_link' href='#param.limit-2.sentence-1'>.</a></div></div><div class='texpara'><div id='param.limit-example-1' class='example'><div class='texpara'>[<i>Example <a href='#param.limit-example-1'>1</a></i>: <span class='codeblock'><span class='preprocessordirective'>#undef</span> DATA_LIMIT |
118 | | -<span class='preprocessordirective'>#if</span> __has_embed<span class='parenthesis'>(</span><span class='anglebracket'><</span>data<span class='operator'>.</span>dat<span class='anglebracket'>></span> limit<span class='parenthesis'>(</span>DATA_LIMIT<span class='parenthesis'>)</span><span class='parenthesis'>)</span> |
| 118 | +<span class='preprocessordirective'>#if</span> <span class='preprocessordirective'>__has_embed</span><span class='parenthesis'>(</span><span class='anglebracket'><</span>data<span class='operator'>.</span>dat<span class='anglebracket'>></span> limit<span class='parenthesis'>(</span>DATA_LIMIT<span class='parenthesis'>)</span><span class='parenthesis'>)</span> |
119 | 119 | <span class='preprocessordirective'>#endif</span> |
120 | | -</span></div><div class='texpara'><div id='param.limit-2.sentence-2' class='sentence'>is equivalent to:</div></div><div class='texpara'><span class='codeblock'><span class='preprocessordirective'>#if</span> __has_embed<span class='parenthesis'>(</span><span class='anglebracket'><</span>data<span class='operator'>.</span>dat<span class='anglebracket'>></span> limit<span class='parenthesis'>(</span><span class='literal'>0</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span> |
| 120 | +</span></div><div class='texpara'><div id='param.limit-2.sentence-2' class='sentence'>is equivalent to:</div></div><div class='texpara'><span class='codeblock'><span class='preprocessordirective'>#if</span> <span class='preprocessordirective'>__has_embed</span><span class='parenthesis'>(</span><span class='anglebracket'><</span>data<span class='operator'>.</span>dat<span class='anglebracket'>></span> limit<span class='parenthesis'>(</span><span class='literal'>0</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span> |
121 | 121 | <span class='preprocessordirective'>#endif</span> |
122 | 122 | </span> — <i>end example</i>]</div></div></div><div class='texpara'><div id='param.limit-example-2' class='example'><div class='texpara'>[<i>Example <a href='#param.limit-example-2'>2</a></i>: <span class='codeblock'><span class='preprocessordirective'>#</span>embed <span class='anglebracket'><</span>data<span class='operator'>.</span>dat<span class='anglebracket'>></span> limit<span class='parenthesis'>(</span><span class='preprocessordirective'>__has_include</span><span class='parenthesis'>(</span><span class='literal'>"a.h"</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span> |
123 | 123 |
|
124 | | -<span class='preprocessordirective'>#if</span> __has_embed<span class='parenthesis'>(</span><span class='anglebracket'><</span>data<span class='operator'>.</span>dat<span class='anglebracket'>></span> limit<span class='parenthesis'>(</span><span class='preprocessordirective'>__has_include</span><span class='parenthesis'>(</span><span class='literal'>"a.h"</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span> |
| 124 | +<span class='preprocessordirective'>#if</span> <span class='preprocessordirective'>__has_embed</span><span class='parenthesis'>(</span><span class='anglebracket'><</span>data<span class='operator'>.</span>dat<span class='anglebracket'>></span> limit<span class='parenthesis'>(</span><span class='preprocessordirective'>__has_include</span><span class='parenthesis'>(</span><span class='literal'>"a.h"</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span><span class='parenthesis'>)</span> |
125 | 125 | <span class='comment'>// ill-formed: <span class='tcode_in_codeblock'>__has_<span class='shy'></span>include</span> (<a href='cpp.cond' title='15.2 Conditional inclusion'>[cpp.<span class='shy'></span>cond]</a>) cannot appear here</span> |
126 | 126 | <span class='preprocessordirective'>#endif</span> |
127 | 127 | </span> — <i>end example</i>]</div></div></div></div><div class='para' id='param.limit-3'><div class='marginalizedparent'><a class='marginalized' href='#param.limit-3'>3</a></div><div class='sourceLinkParent'><a class='sourceLink' href='https://github.com/cplusplus/draft/tree/9b8a5e51752efe9edd7a447e96ffab0f3313accc/source/preprocessor.tex#L1074'>#</a></div><div class='texpara'><div id='param.limit-3.sentence-1' class='sentence'>The <a href='expr.const#nt:constant-expression' title='7.7 Constant expressions [expr.const]'><span id='ntref:constant-expression__'><span class='textsf'><i >constant-expression</i></span></span></a> shall be an integral constant expression |
|
168 | 168 | expands to |
169 | 169 | <span class='codeblock'><span class='literal'>42203</span> |
170 | 170 | </span></div> — <i>end example</i>]</div></div></div><div class='texpara'><div id='param.if.empty-example-2' class='example'><div class='texpara'>[<i>Example <a href='#param.if.empty-example-2'>2</a></i>: <div id='param.if.empty-2.sentence-6' class='sentence'>This resource is considered empty due to the <span class='texttt'>limit<span class='parenthesis'>(</span><span class='literal'>0</span><span class='parenthesis'>)</span></span> <a href='cpp.pre#nt:embed-parameter' title='15.1 Preamble [cpp.pre]'><span id='ntref:embed-parameter_______'><span class='textsf'><i >embed-parameter</i></span></span></a>, |
171 | | -always, including in <span class='texttt'>__has_<span class='shy'></span>embed</span> clauses<a class='hidden_link' href='#param.if.empty-2.sentence-6'>.</a></div></div><div class='texpara'><span class='codeblock'><span class='keyword'>int</span> infinity_zero <span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='curlybracket'>{</span> |
172 | | -<span class='preprocessordirective'>#if</span> __has_embed<span class='parenthesis'>(</span><span class='anglebracket'><</span><span class='operator'>/</span>owo<span class='operator'>/</span>uwurandom<span class='anglebracket'>></span> limit<span class='parenthesis'>(</span><span class='literal'>0</span><span class='parenthesis'>)</span> prefix<span class='parenthesis'>(</span>some tokens<span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>=</span><span class='operator'>=</span> __STDC_EMBED_EMPTY__ |
| 171 | +always, including in <span class='texttt'><span class='preprocessordirective'>__has_<span class='shy'></span>embed</span></span> clauses<a class='hidden_link' href='#param.if.empty-2.sentence-6'>.</a></div></div><div class='texpara'><span class='codeblock'><span class='keyword'>int</span> infinity_zero <span class='parenthesis'>(</span><span class='parenthesis'>)</span> <span class='curlybracket'>{</span> |
| 172 | +<span class='preprocessordirective'>#if</span> <span class='preprocessordirective'>__has_embed</span><span class='parenthesis'>(</span><span class='anglebracket'><</span><span class='operator'>/</span>owo<span class='operator'>/</span>uwurandom<span class='anglebracket'>></span> limit<span class='parenthesis'>(</span><span class='literal'>0</span><span class='parenthesis'>)</span> prefix<span class='parenthesis'>(</span>some tokens<span class='parenthesis'>)</span><span class='parenthesis'>)</span> <span class='operator'>=</span><span class='operator'>=</span> __STDC_EMBED_EMPTY__ |
173 | 173 | <span class='comment'>// if <span class='tcode_in_codeblock'></owo/uwurandom></span> exists, this conditional inclusion branch is taken and the function returns <span class='tcode_in_codeblock'>0</span>.</span> |
174 | 174 | <span class='keyword'>return</span> <span class='literal'>0</span>; |
175 | 175 | <span class='preprocessordirective'>#else</span> |
|
0 commit comments