1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>Determine if a Type Should be Treated as a Container (Qi and Karma)</title> 5<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css"> 6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> 7<link rel="home" href="../../../index.html" title="Spirit 2.5.8"> 8<link rel="up" href="../customize.html" title="Customization of Spirit's Attribute Handling"> 9<link rel="prev" href="../customize.html" title="Customization of Spirit's Attribute Handling"> 10<link rel="next" href="is_string.html" title="Determine if a Type Should be Treated as a String (Qi and Karma)"> 11</head> 12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> 13<table cellpadding="2" width="100%"><tr> 14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td> 15<td align="center"><a href="../../../../../../../index.html">Home</a></td> 16<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td> 17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> 18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> 19<td align="center"><a href="../../../../../../../more/index.htm">More</a></td> 20</tr></table> 21<hr> 22<div class="spirit-nav"> 23<a accesskey="p" href="../customize.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_string.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a> 24</div> 25<div class="section"> 26<div class="titlepage"><div><div><h4 class="title"> 27<a name="spirit.advanced.customize.is_container"></a><a class="link" href="is_container.html" title="Determine if a Type Should be Treated as a Container (Qi and Karma)">Determine if 28 a Type Should be Treated as a Container (Qi and Karma)</a> 29</h4></div></div></div> 30<h6> 31<a name="spirit.advanced.customize.is_container.h0"></a> 32 <span class="phrase"><a name="spirit.advanced.customize.is_container.is_container"></a></span><a class="link" href="is_container.html#spirit.advanced.customize.is_container.is_container">is_container</a> 33 </h6> 34<p> 35 The template <code class="computeroutput"><span class="identifier">is_container</span></code> 36 is a template meta-function used as an attribute customization point. It 37 is invoked by the <span class="emphasis"><em>Qi</em></span> <a class="link" href="../../qi/reference/operator/sequence.html" title="Sequence Parser (a >> b)">Sequence</a> 38 (<code class="computeroutput"><span class="special">>></span></code>) and <span class="emphasis"><em>Karma</em></span> 39 <a class="link" href="../../karma/reference/operator/sequence.html" title="Sequence Generator (a << b)">Sequence (<code class="computeroutput"><span class="special"><<</span></code>)</a> operators in order to determine 40 whether a supplied attribute can potentially be treated as a container. 41 </p> 42<h6> 43<a name="spirit.advanced.customize.is_container.h1"></a> 44 <span class="phrase"><a name="spirit.advanced.customize.is_container.header"></a></span><a class="link" href="is_container.html#spirit.advanced.customize.is_container.header">Header</a> 45 </h6> 46<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">support</span><span class="special">/</span><span class="identifier">container</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> 47</pre> 48<p> 49 Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>. 50 </p> 51<div class="note"><table border="0" summary="Note"> 52<tr> 53<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td> 54<th align="left">Note</th> 55</tr> 56<tr><td align="left" valign="top"><p> 57 This header file does not need to be included directly by any user program 58 as it is normally included by other Spirit header files relying on its 59 content. 60 </p></td></tr> 61</table></div> 62<h6> 63<a name="spirit.advanced.customize.is_container.h2"></a> 64 <span class="phrase"><a name="spirit.advanced.customize.is_container.namespace"></a></span><a class="link" href="is_container.html#spirit.advanced.customize.is_container.namespace">Namespace</a> 65 </h6> 66<div class="informaltable"><table class="table"> 67<colgroup><col></colgroup> 68<thead><tr><th> 69 <p> 70 Name 71 </p> 72 </th></tr></thead> 73<tbody><tr><td> 74 <p> 75 <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span></code> 76 </p> 77 </td></tr></tbody> 78</table></div> 79<h6> 80<a name="spirit.advanced.customize.is_container.h3"></a> 81 <span class="phrase"><a name="spirit.advanced.customize.is_container.synopsis"></a></span><a class="link" href="is_container.html#spirit.advanced.customize.is_container.synopsis">Synopsis</a> 82 </h6> 83<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Container</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">></span> 84<span class="keyword">struct</span> <span class="identifier">is_container</span> 85<span class="special">{</span> 86 <span class="special"><</span><span class="identifier">unspecified</span><span class="special">>;</span> 87<span class="special">};</span> 88</pre> 89<h6> 90<a name="spirit.advanced.customize.is_container.h4"></a> 91 <span class="phrase"><a name="spirit.advanced.customize.is_container.template_parameters"></a></span><a class="link" href="is_container.html#spirit.advanced.customize.is_container.template_parameters">Template 92 parameters</a> 93 </h6> 94<div class="informaltable"><table class="table"> 95<colgroup> 96<col> 97<col> 98<col> 99</colgroup> 100<thead><tr> 101<th> 102 <p> 103 Parameter 104 </p> 105 </th> 106<th> 107 <p> 108 Description 109 </p> 110 </th> 111<th> 112 <p> 113 Default 114 </p> 115 </th> 116</tr></thead> 117<tbody> 118<tr> 119<td> 120 <p> 121 <code class="computeroutput"><span class="identifier">Container</span></code> 122 </p> 123 </td> 124<td> 125 <p> 126 The type, <code class="computeroutput"><span class="identifier">Container</span></code> 127 which needs to be tested whether it has to be treated as a container 128 </p> 129 </td> 130<td> 131 <p> 132 none 133 </p> 134 </td> 135</tr> 136<tr> 137<td> 138 <p> 139 <code class="computeroutput"><span class="identifier">Enable</span></code> 140 </p> 141 </td> 142<td> 143 <p> 144 Helper template parameter usable to selectively enable or disable 145 certain specializations of <code class="computeroutput"><span class="identifier">is_container</span></code> 146 utilizing SFINAE (i.e. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></code> 147 or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></code>). 148 </p> 149 </td> 150<td> 151 <p> 152 <code class="computeroutput"><span class="keyword">void</span></code> 153 </p> 154 </td> 155</tr> 156</tbody> 157</table></div> 158<div class="variablelist"> 159<p class="title"><b>Notation</b></p> 160<dl class="variablelist"> 161<dt><span class="term"><code class="computeroutput"><span class="identifier">C</span></code></span></dt> 162<dd><p> 163 A type to be tested whether it needs to be treated as a container. 164 </p></dd> 165<dt><span class="term"><code class="computeroutput"><span class="identifier">T1</span></code>, <code class="computeroutput"><span class="identifier">T2</span></code>, ...</span></dt> 166<dd><p> 167 Arbitrary types 168 </p></dd> 169</dl> 170</div> 171<h6> 172<a name="spirit.advanced.customize.is_container.h5"></a> 173 <span class="phrase"><a name="spirit.advanced.customize.is_container.expression_semantics"></a></span><a class="link" href="is_container.html#spirit.advanced.customize.is_container.expression_semantics">Expression 174 Semantics</a> 175 </h6> 176<div class="informaltable"><table class="table"> 177<colgroup> 178<col> 179<col> 180</colgroup> 181<thead><tr> 182<th> 183 <p> 184 Expression 185 </p> 186 </th> 187<th> 188 <p> 189 Semantics 190 </p> 191 </th> 192</tr></thead> 193<tbody><tr> 194<td> 195 <p> 196 <code class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">type</span></code> 197 </p> 198 </td> 199<td> 200 <p> 201 Result of the metafunction that evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code> 202 if a given type, <code class="computeroutput"><span class="identifier">C</span></code>, 203 is to be treated as a container, <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code> 204 otherwise Generally, any implementation of <code class="computeroutput"><span class="identifier">is_container</span></code> 205 needs to behave as if if was a <a href="../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL 206 Boolean Constant</a>.. 207 </p> 208 </td> 209</tr></tbody> 210</table></div> 211<h6> 212<a name="spirit.advanced.customize.is_container.h6"></a> 213 <span class="phrase"><a name="spirit.advanced.customize.is_container.predefined_specializations"></a></span><a class="link" href="is_container.html#spirit.advanced.customize.is_container.predefined_specializations">Predefined 214 Specializations</a> 215 </h6> 216<p> 217 <a href="http://boost-spirit.com" target="_top">Spirit</a> predefines specializations 218 of this customization point for several types. The following table lists 219 those types together with the conditions for which the corresponding specializations 220 will evaluate to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code> (see <a href="../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL 221 Boolean Constant</a>): 222 </p> 223<div class="informaltable"><table class="table"> 224<colgroup> 225<col> 226<col> 227</colgroup> 228<thead><tr> 229<th> 230 <p> 231 Template Parameters 232 </p> 233 </th> 234<th> 235 <p> 236 Semantics 237 </p> 238 </th> 239</tr></thead> 240<tbody> 241<tr> 242<td> 243 <p> 244 <code class="computeroutput"><span class="identifier">T</span></code> 245 </p> 246 </td> 247<td> 248 <p> 249 Returns <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code> if <code class="computeroutput"><span class="identifier">T</span></code> 250 has the following embedded types defined: <code class="computeroutput"><span class="identifier">value_type</span></code>, 251 <code class="computeroutput"><span class="identifier">iterator</span></code>, <code class="computeroutput"><span class="identifier">size_type</span></code>, and<code class="computeroutput"><span class="identifier">reference</span></code>. Otherwise it will 252 return <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>. 253 </p> 254 </td> 255</tr> 256<tr> 257<td> 258 <p> 259 <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code> 260 </p> 261 </td> 262<td> 263 <p> 264 Returns <code class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span></code> 265 </p> 266 </td> 267</tr> 268<tr> 269<td> 270 <p> 271 <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span> 272 <span class="identifier">T2</span><span class="special">,</span> 273 <span class="special">...></span></code> 274 </p> 275 </td> 276<td> 277 <p> 278 Returns <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code> if at least one of the 279 <code class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">TN</span><span class="special">>::</span><span class="identifier">type</span></code> 280 returns <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code> (where <code class="computeroutput"><span class="identifier">TN</span></code> is <code class="computeroutput"><span class="identifier">T1</span></code>, 281 <code class="computeroutput"><span class="identifier">T2</span></code>, ...). Otherwise 282 it will return <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>. 283 </p> 284 </td> 285</tr> 286<tr> 287<td> 288 <p> 289 <code class="computeroutput"><span class="identifier">unused_type</span></code> 290 </p> 291 </td> 292<td> 293 <p> 294 Returns <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>. 295 </p> 296 </td> 297</tr> 298</tbody> 299</table></div> 300<h6> 301<a name="spirit.advanced.customize.is_container.h7"></a> 302 <span class="phrase"><a name="spirit.advanced.customize.is_container.when_to_implement"></a></span><a class="link" href="is_container.html#spirit.advanced.customize.is_container.when_to_implement">When 303 to implement</a> 304 </h6> 305<p> 306 The customization point <code class="computeroutput"><span class="identifier">is_container</span></code> 307 needs to be implemented for a specific type whenever this type is to be 308 used as an attribute in place of a STL container. It is applicable for 309 parsers (<span class="emphasis"><em>Spirit.Qi</em></span>) and generators (<span class="emphasis"><em>Spirit.Karma</em></span>). 310 As a rule of thumb: it has to be implemented whenever a certain type is 311 to be passed as an attribute to a parser or a generator normally exposing 312 a STL container, <code class="computeroutput"><span class="identifier">C</span></code> and 313 if the type does not expose the interface of a STL container (i.e. <code class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">type</span></code> would normally return <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>). These components have an attribute 314 propagation rule in the form: 315 </p> 316<pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--></span> <span class="identifier">Op</span><span class="special">(</span><span class="identifier">a</span><span class="special">):</span> <span class="identifier">vector</span><span class="special"><</span><span class="identifier">A</span><span class="special">></span> 317</pre> 318<p> 319 where <code class="computeroutput"><span class="identifier">Op</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span></code> stands 320 for any meaningful operation on the component <code class="computeroutput"><span class="identifier">a</span></code>. 321 </p> 322<h6> 323<a name="spirit.advanced.customize.is_container.h8"></a> 324 <span class="phrase"><a name="spirit.advanced.customize.is_container.related_attribute_customization_points"></a></span><a class="link" href="is_container.html#spirit.advanced.customize.is_container.related_attribute_customization_points">Related 325 Attribute Customization Points</a> 326 </h6> 327<p> 328 If this customization point is implemented, the following other customization 329 points might need to be implemented as well. 330 </p> 331<div class="informaltable"><table class="table"> 332<colgroup> 333<col> 334<col> 335</colgroup> 336<thead><tr> 337<th> 338 <p> 339 Name 340 </p> 341 </th> 342<th> 343 <p> 344 When to implement 345 </p> 346 </th> 347</tr></thead> 348<tbody> 349<tr> 350<td> 351 <p> 352 <a class="link" href="store_value/container_value.html" title="Determine the Type to be Stored in a Container (Qi)"><code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">container_value</span></code></a> 353 </p> 354 </td> 355<td> 356 <p> 357 Needs to be implemented whenever <code class="computeroutput"><span class="identifier">is_container</span></code> 358 is implemented. 359 </p> 360 </td> 361</tr> 362<tr> 363<td> 364 <p> 365 <a class="link" href="store_value/push_back.html" title="Store a Parsed Attribute Value into a Container (Qi)"><code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">push_back_container</span></code></a> 366 </p> 367 </td> 368<td> 369 <p> 370 Qi: <a class="link" href="../../qi/reference/operator/list.html" title="List Parser (a % b)">List</a>, 371 <a class="link" href="../../qi/reference/operator/kleene.html" title="Kleene Parser (*a)">Kleene</a>, 372 <a class="link" href="../../qi/reference/operator/plus.html" title="Plus Parser (+a)">Plus</a>, 373 <a class="link" href="../../qi/reference/directive/repeat.html" title="Repetition Parser Directive (repeat[])">Repeat</a>. 374 </p> 375 </td> 376</tr> 377<tr> 378<td> 379 <p> 380 <a class="link" href="iterate/container_iterator.html" title="Determine the Type of the Iterator of a Container"><code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">container_iterator</span></code></a> 381 </p> 382 </td> 383<td> 384 <p> 385 Karma: <a class="link" href="../../karma/reference/operator/list.html" title="List Generator (a % b)">List 386 (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../karma/reference/operator/kleene.html" title="Kleene Star Generator (*a)">Kleene (unary 387 <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../karma/reference/operator/plus.html" title="Plus Generator (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../karma/reference/directive/repeat.html" title="Repetition Generator Directive (repeat[])">Repeat</a>. 388 </p> 389 </td> 390</tr> 391<tr> 392<td> 393 <p> 394 <a class="link" href="iterate/begin_container.html" title="Get the Iterator pointing to the Begin of a Container Attribute"><code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">begin_container</span></code></a> 395 </p> 396 </td> 397<td> 398 <p> 399 Karma: <a class="link" href="../../karma/reference/operator/list.html" title="List Generator (a % b)">List 400 (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../karma/reference/operator/kleene.html" title="Kleene Star Generator (*a)">Kleene (unary 401 <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../karma/reference/operator/plus.html" title="Plus Generator (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../karma/reference/directive/repeat.html" title="Repetition Generator Directive (repeat[])">Repeat</a>. 402 </p> 403 </td> 404</tr> 405<tr> 406<td> 407 <p> 408 <a class="link" href="iterate/end_container.html" title="Get the Iterator pointing to the End of a Container Attribute"><code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">end_container</span></code></a> 409 </p> 410 </td> 411<td> 412 <p> 413 Karma: <a class="link" href="../../karma/reference/operator/list.html" title="List Generator (a % b)">List 414 (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../karma/reference/operator/kleene.html" title="Kleene Star Generator (*a)">Kleene (unary 415 <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../karma/reference/operator/plus.html" title="Plus Generator (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../karma/reference/directive/repeat.html" title="Repetition Generator Directive (repeat[])">Repeat</a>. 416 </p> 417 </td> 418</tr> 419<tr> 420<td> 421 <p> 422 <a class="link" href="iterate/deref_iterator.html" title="Dereference the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">deref_iterator</span></code></a> 423 </p> 424 </td> 425<td> 426 <p> 427 Karma: <a class="link" href="../../karma/reference/operator/list.html" title="List Generator (a % b)">List 428 (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../karma/reference/operator/kleene.html" title="Kleene Star Generator (*a)">Kleene (unary 429 <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../karma/reference/operator/plus.html" title="Plus Generator (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../karma/reference/directive/repeat.html" title="Repetition Generator Directive (repeat[])">Repeat</a>. 430 </p> 431 </td> 432</tr> 433<tr> 434<td> 435 <p> 436 <a class="link" href="iterate/next_iterator.html" title="Increment the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">next_iterator</span></code></a> 437 </p> 438 </td> 439<td> 440 <p> 441 Karma: <a class="link" href="../../karma/reference/operator/list.html" title="List Generator (a % b)">List 442 (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../karma/reference/operator/kleene.html" title="Kleene Star Generator (*a)">Kleene (unary 443 <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../karma/reference/operator/plus.html" title="Plus Generator (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../karma/reference/directive/repeat.html" title="Repetition Generator Directive (repeat[])">Repeat</a>. 444 </p> 445 </td> 446</tr> 447<tr> 448<td> 449 <p> 450 <a class="link" href="iterate/compare_iterators.html" title="Compare two Iterator pointing into a Container Attribute for Equality"><code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">compare_iterators</span></code></a> 451 </p> 452 </td> 453<td> 454 <p> 455 Karma: <a class="link" href="../../karma/reference/operator/list.html" title="List Generator (a % b)">List 456 (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../karma/reference/operator/kleene.html" title="Kleene Star Generator (*a)">Kleene (unary 457 <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../karma/reference/operator/plus.html" title="Plus Generator (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../karma/reference/directive/repeat.html" title="Repetition Generator Directive (repeat[])">Repeat</a>. 458 </p> 459 </td> 460</tr> 461<tr> 462<td> 463 <p> 464 <a class="link" href="clear_value.html" title="Re-Initialize an Attribute Value before Parsing (Qi)"><code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">clear_value</span></code></a> 465 </p> 466 </td> 467<td> 468 <p> 469 Qi: <a class="link" href="../../qi/reference/operator/list.html" title="List Parser (a % b)">List</a>, 470 <a class="link" href="../../qi/reference/operator/kleene.html" title="Kleene Parser (*a)">Kleene</a>, 471 <a class="link" href="../../qi/reference/operator/plus.html" title="Plus Parser (+a)">Plus</a>, 472 <a class="link" href="../../qi/reference/directive/repeat.html" title="Repetition Parser Directive (repeat[])">Repeat</a>. 473 </p> 474 </td> 475</tr> 476</tbody> 477</table></div> 478<h6> 479<a name="spirit.advanced.customize.is_container.h9"></a> 480 <span class="phrase"><a name="spirit.advanced.customize.is_container.example"></a></span><a class="link" href="is_container.html#spirit.advanced.customize.is_container.example">Example</a> 481 </h6> 482<p> 483 For examples of how to use the customization point <code class="computeroutput"><span class="identifier">is_container</span></code> 484 please see here: <a class="link" href="iterate/container_iterator.html#spirit.advanced.customize.iterate.container_iterator.example">embedded_container_example</a>, 485 <a class="link" href="iterate/next_iterator.html#spirit.advanced.customize.iterate.next_iterator.example">use_as_container</a>, 486 and <a class="link" href="iterate/deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.example">counter_example</a>. 487 </p> 488</div> 489<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 490<td align="left"></td> 491<td align="right"><div class="copyright-footer">Copyright © 2001-2011 Joel de Guzman, Hartmut Kaiser<p> 492 Distributed under the Boost Software License, Version 1.0. (See accompanying 493 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>) 494 </p> 495</div></td> 496</tr></table> 497<hr> 498<div class="spirit-nav"> 499<a accesskey="p" href="../customize.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="is_string.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a> 500</div> 501</body> 502</html> 503