• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 &gt;&gt; b)">Sequence</a>
38          (<code class="computeroutput"><span class="special">&gt;&gt;</span></code>) and <span class="emphasis"><em>Karma</em></span>
39          <a class="link" href="../../karma/reference/operator/sequence.html" title="Sequence Generator (a &lt;&lt; b)">Sequence (<code class="computeroutput"><span class="special">&lt;&lt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</span>
84<span class="keyword">struct</span> <span class="identifier">is_container</span>
85<span class="special">{</span>
86    <span class="special">&lt;</span><span class="identifier">unspecified</span><span class="special">&gt;;</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">&lt;</span><span class="identifier">C</span><span class="special">&gt;::</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code>
260                  </p>
261                </td>
262<td>
263                  <p>
264                    Returns <code class="computeroutput"><span class="identifier">is_container</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</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">&lt;</span><span class="identifier">T1</span><span class="special">,</span>
272                    <span class="identifier">T2</span><span class="special">,</span>
273                    <span class="special">...&gt;</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">&lt;</span><span class="identifier">TN</span><span class="special">&gt;::</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">&lt;</span><span class="identifier">C</span><span class="special">&gt;::</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">--&gt;</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">&lt;</span><span class="identifier">A</span><span class="special">&gt;</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