Imported Upstream version 1.51.0
[platform/upstream/boost.git] / libs / spirit / doc / html / spirit / advanced / customize / is_container.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
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.76.1">
7 <link rel="home" href="../../../index.html" title="Spirit 2.5.2">
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><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><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><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><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><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>
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><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><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><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><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><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 &#169; 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>